整型量

整型量( integer)包括整型常量、整型變數。整型常量就是整常數。在C語言中,使用的整常數有:八進制、十六進制和十進制三種。

基本信息

整型常量

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

以下各數是合法的八進制數:

015(十進制為13) 0101(十進制為65) 0177777(十進制為65535)

以下各數不是合法的八進制數:

256(無前綴0) 0382(包含了非八進制數碼) -0127(出現了負號)

2.十六進制整常數

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

以下各數是合法的十六進制整常數:

0X2A(十進制為42) 0XA0 (十進制為160) 0XFFFF (十進制為65535)

以下各數不是合法的十六進制整常數:

5A (無前綴0X) 0X3H (含有非十六進制數碼)

3.十進制整常數

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

以下各數是合法的十進制整常數:

237 -568 65535 1627

以下各數不是合法的十進制整常數:

023 (不能有前導0) 23D (含有非十進制數碼)

在程式中是根據前綴來區分各種進制數的。因此在書寫常數時不要把前綴弄錯造成結果不正確。例如,數組int power_of_10[4]={0001,0010,0100,1000}的初值會被解釋為{1,8,64,1000}。

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或4個位元組的存儲空間。因此在運算和輸出格式上要予以注意,避免出錯。對長整型都表示不了的大數,某些編譯器規定可有64位整常數表示,後綴為“LL”或“ll”。有時,因為特殊需要,可能要對短整型進行特殊標記,只有部分編譯器支持短整型的後綴“S”或“s”。無符號數也可用後綴表示,整型常數的無符號數的後綴為“U”或“u”。例如:358u,0x38Au,235Lu均為無符號數。前綴,後綴可同時使用以表示各種類型的數。如0XA5Lu表示十六進制無符號長整數A5,其十進制為165。

整型變數

整型變數可分為以下幾類:

1.基本型

類型說明符為int,根據計算機的內部字長和編譯器的版本,在記憶體中可能占2或4個位元組(通常分別在16位機和32位機上),其取值為基本整常數。

2.短整型

類型說明符為short int或short,在記憶體中占2個位元組,其取值為短整常數。

3.長整型

類型說明符為long int或long,在記憶體中占4個位元組,其取值為長整常數。

4.64位整型(非ANSI標準)

類型說明符為__int64、long long int或long long,在記憶體中占8個位元組,其取值為64位整常數。

5.無符號型

類型說明符為unsigned。它可以單獨使用代表unsigned int,也可以作為前綴,都表示無符號整數,即永遠為非負的整型變數,大於0的數據範圍約擴大為原來的2倍。各種無符號類型量所占的記憶體空間位元組數與相應的有符號類型量相同。但由於省去了符號位,故不能表示負數。下表列出了Turbo C中各類整型量所分配的記憶體位元組數及數的表示範圍。

類型說明符 數的範圍 分配位元組數
int -32768~32767 ■■
short int -32768~32767 ■■
signed int -32768~32767 ■■
unsigned int 0~65535 ■■
long int -2147483648~2147483647 ■■■■
unsigned long 0~4294967295 ■■■■

整型變數的說明

變數說明的一般形式為:類型說明符 變數名標識符,變數名標識符,...; 例如:

int a,b,c; (a,b,c為整型變數)

long x,y; (x,y為長整型變數)

unsigned p,q; (p,q為無符號整型變數)

在書寫變數說明時,應注意以下幾點:

1.允許在一個類型說明符後,說明多個相同類型的變數。各變數名之間用逗號間隔。類型說明符與變數名之間至少用一個空格間隔。

2.最後一個變數名之後必須以“;”號結尾。

3.變數說明必須放在變數使用之前。一般放在函式體的開頭部分。

[Practice] //1int a,b;

short int c;

short d=100;

a=d-20;

b=a+d;

c=a+b+d;

d=d-a+c-b;'Vtable

a,2,0

b,2,0

c,2,0

d,2,100

of Vtable

'Vupdate

1,0;2,0

3,0

4,100

1,80

2,180

3,360

4,200

of Vupdate

of Practice

[Practice] //2int a=5;

int b=9;

long int c;

long d;

c=a+b-7;

d=a*b*c;

c=d*d*d;

a=c-d;'Vtable

a,2,5

b,2,9

c,4,0

d,4,0

of Vtable

'Vupdate

1,5

2,9

3,0

4,0

3,7

4,315

3,31255875

1,-5112

of Vupdate

of Practice

[Practice] //3int a=6,b=19;

unsigned int c;

int d;

c=a-b+7;

d=b*c;

a=b+c+d;

b=-a;'Vtable

a,2,6

b,2,19

c,2,0

d,2,0

of Vtable

'Vupdate

1,6;2,19

3,0

4,0

3,65530

4,-114

1,-101

2,101

of Vupdate

of Practice

void 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);

}

將main說明為返回void,即不返回任何類型的值

x,y被定義為long型

a,b,c,d被定義為int型

5->x

6->y

7->a

8->b

x+a->c

y+b->d

顯示程式運行結果 of long x,y;

int a,b,c,d;

c=x+a;

d=y+b;

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

相關詞條

相關搜尋

熱門詞條

聯絡我們