程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言整型數據使用教程

C語言整型數據使用教程

編輯:關於C語言
 

整型量包括整型常量、整型變量。

整型常量的表示方法

整型常量就是整常數。在C語言中,使用的整常數有八進制、十六進制和十進制三種。

1) 十進制整常數
十進制整常數沒有前綴。其數碼為0~9。

以下各數是合法的十進制整常數:237、-568、65535、1627;

以下各數不是合法的十進制整常數:023 (不能有前導0)、23D (含有非十進制數碼)。

在程序中是根據前綴來區分各種進制數的。因此在書寫常數時不要把前綴弄錯造成結果不正確。

2) 八進制整常數
八進制整常數必須以0開頭,即以0作為八進制數的前綴。數碼取值為0~7。八進制數通常是無符號數。

以下各數是合法的八進制數:015(十進制為13)、0101(十進制為65)、0177777(十進制為65535);

以下各數不是合法的八進制數:256(無前綴0)、03A2(包含了非八進制數碼)、-0127(出現了負號)。

3) 十六進制整常數
十六進制整常數的前綴為0X或0x。其數碼取值為0~9,A~F或a~f。

以下各數是合法的十六進制整常數:0X2A(十進制為42)、0XA0 (十進制為160)、0XFFFF (十進制為65535);

以下各數不是合法的十六進制整常數:5A (無前綴0X)、0X3H (含有非十六進制數碼)。

4) 整型常數的後綴
在16位字長的機器上,基本整型的長度也為16位,因此表示的數的范圍也是有限定的。十進制無符號整常數的范圍為0~65535,有符號數為-32768~+32767。八進制無符號數的表示范圍為0~0177777。十六進制無符號數的表示范圍為0X0~0XFFFF或0x0~0xFFFF。如果使用的數超過了上述范圍,就必須用長整型數來表示。長整型數是用後綴“L”或“l”來表示的。

例如:

  • 十進制長整常數:158L (十進制為158)、358000L (十進制為358000);
  • 八進制長整常數:012L (十進制為10)、077L (十進制為63)、0200000L (十進制為65536);
  • 十六進制長整常數:0X15L (十進制為21)、0XA5L (十進制為165)、0X10000L (十進制為65536)。


長整數158L和基本整常數158 在數值上並無區別。但對158L,因為是長整型量,C編譯系統將為它分配4個字節存儲空間。而對158,因為是基本整型,只分配2 個字節的存儲空間。因此在運算和輸出格式上要予以注意,避免出錯。

無符號數也可用後綴表示,整型常數的無符號數的後綴為“U”或“u”。例如:358u、0x38Au、235Lu均為無符號數。

前綴,後綴可同時使用以表示各種類型的數。如0XA5Lu表示十六進制無符號長整數A5,其十進制為165。
 

整型變量

1) 整型數據在內存中的存放形式
如果定義了一個整型變量i:

int i;
i=10;

整型變量

數值是以補碼表示的:

  • 正數的補碼和原碼相同;
  • 負數的補碼:將該數的絕對值的二進制形式按位取反再加1。


例如:求-10的補碼:



由此可知,左面的第一位是表示符號的。

2) 整型變量的分類

  1. 基本型:類型說明符為int,在內存中占2個字節。
  2. 短整量:類型說明符為short int或short。所占字節和取值范圍均與基本型相同。
  3. 長整型:類型說明符為long int或long,在內存中占4個字節。
  4. 無符號型:類型說明符為unsigned。


無符號型又可與上述三種類型匹配而構成:

  • 無符號基本型:類型說明符為unsigned int或unsigned。
  • 無符號短整型:類型說明符為unsigned short。
  • 無符號長整型:類型說明符為unsigned long。


各種無符號類型量所占的內存空間字節數與相應的有符號類型量相同。但由於省去了符號位,故不能表示負數。



下表列出了C語言中各類整型量所分配的內存字節數及數的表示范圍。
類型說明符 數的范圍 字節數 int -32768~32767           即-215~(215-1) 2 unsigned int 0~65535              即0~(216-1) 2 short int -32768~32767           即-215~(215-1) 2 unsigned short int 0~65535              即0~(216-1) 2 long int -2147483648~2147483647即-231~(231-1) 4 unsigned long 0~4294967295         即0~(232-1) 4
以13為例:


3) 整型變量的定義
變量定義的一般形式為:
類型說明符  變量名標識符,變量名標識符,...;

例如:

int a,b,c;  /* a,b,c為整型變量 */
long x,y;  /* x,y為長整型變量 */
unsigned p,q;  /* p,q為無符號整型變量 */


在書寫變量定義時,應注意以下幾點:

  • 允許在一個類型說明符後,定義多個相同類型的變量。各變量名之間用逗號間隔。類型說明符與變量名之間至少用一個空格間隔。
  • 最後一個變量名之後必須以“;”號結尾。
  • 變量定義必須放在變量使用之前。一般放在函數體的開頭部分。


【例3-2】整型變量的定義與使用。

main(){
    int a,b,c,d;
    unsigned u;
    a=12;b=-24;u=10;
    c=a+u;d=b+u;
    printf("a+u=%d,b+u=%d\n",c,d);
}


4) 整型數據的溢出
【例3-3】整型數據的溢出。

main(){
    int a,b;
    a=32767;
    b=a+1;
    printf("%d,%d\n",a,b);
}




【例3-4】

main(){
    long x,y;
    int a,b,c,d;
    x=5;
    y=6;
    a=7;
    b=8;
    c=x+a;
    d=y+b;
    printf("c=x+a=%d,d=y+b=%d\n",c,d);
}


從程序中可以看到:x、y是長整型變量,a、b是基本整型變量。它們之間允許進行運算,運算結果為長整型。但c、d被定義為基本整型,因此最後結果為基本整型。本例說明,不同類型的量可以參與運算並相互賦值。其中的類型轉換是由編譯系統自動完成的。有關類型轉換的規則將在以後介紹

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved