- 相關(guān)推薦
C語(yǔ)言整型數(shù)據(jù)分析
不同類型的量可以參與運(yùn)算并相互賦值。其中的類型轉(zhuǎn)換是由編譯系統(tǒng)自動(dòng)完成的。以下是小編為大家搜索整理的C語(yǔ)言整型數(shù)據(jù)分析,希望能給大家?guī)?lái)幫助!更多精彩內(nèi)容請(qǐng)及時(shí)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
整型數(shù)據(jù)即整數(shù)。
整型數(shù)據(jù)的分類
整型數(shù)據(jù)的一般分類如下:
基本型:類型說(shuō)明符為int,在內(nèi)存中占2個(gè)字節(jié)。
短整型:類型說(shuō)明符為short int或short。所占字節(jié)和取值范圍均與基本型相同。
長(zhǎng)整型:類型說(shuō)明符為long int或long,在內(nèi)存中占4個(gè)字節(jié)。
無(wú)符號(hào)型:類型說(shuō)明符為unsigned。
無(wú)符號(hào)型又可與上述三種類型匹配而構(gòu)成:
無(wú)符號(hào)基本型:類型說(shuō)明符為unsigned int或unsigned。
無(wú)符號(hào)短整型:類型說(shuō)明符為unsigned short。
無(wú)符號(hào)長(zhǎng)整型:類型說(shuō)明符為unsigned long。
下表列出了C語(yǔ)言中各類整型數(shù)據(jù)所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍。
類型說(shuō)明符 數(shù)的范圍 字節(jié)數(shù)
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
整型數(shù)據(jù)在內(nèi)存中的存放形式
如果定義了一個(gè)整型變量i:
int i;
i=10;
數(shù)值是以補(bǔ)碼表示的:
正數(shù)的補(bǔ)碼和原碼相同;
負(fù)數(shù)的補(bǔ)碼:將該數(shù)的絕對(duì)值的二進(jìn)制形式按位取反再加1。
例如:求-10的補(bǔ)碼:
由此可知,左面的第一位是表示符號(hào)的。
各種無(wú)符號(hào)整型數(shù)據(jù)所占的內(nèi)存空間字節(jié)數(shù)與相應(yīng)的有符號(hào)類型量相同。但由于省去了符號(hào)位,故不能表示負(fù)數(shù)。
以13為例:
整型數(shù)據(jù)的表示方法
上面講到的整數(shù),都是十進(jìn)制。在C語(yǔ)言中,常用的還有八進(jìn)制和十六進(jìn)制。下面集中講解一下:
1) 十進(jìn)制數(shù)
十進(jìn)制數(shù)沒(méi)有前綴。其數(shù)碼為0~9。
以下是合法的十進(jìn)制數(shù):237、-568、65535、1627;
以下是不合法的十進(jìn)制數(shù):023 (不能有前導(dǎo)0)、23D (含有非十進(jìn)制數(shù)碼)。
在程序中是根據(jù)前綴來(lái)區(qū)分各種進(jìn)制數(shù)的。因此在書寫時(shí)不要把前綴弄錯(cuò)造成結(jié)果不正確。
2) 八進(jìn)制數(shù)
八進(jìn)制數(shù)必須以0開(kāi)頭,即以0作為八進(jìn)制數(shù)的前綴。數(shù)碼取值為0~7。八進(jìn)制數(shù)通常是無(wú)符號(hào)數(shù)。
以下是合法的八進(jìn)制數(shù):015(十進(jìn)制為13)、0101(十進(jìn)制為65)、0177777(十進(jìn)制為65535);
以下是不合法的八進(jìn)制數(shù):256(無(wú)前綴0)、03A2(包含了非八進(jìn)制數(shù)碼)、-0127(出現(xiàn)了負(fù)號(hào))。
3) 十六進(jìn)制數(shù)
十六進(jìn)制數(shù)的前綴為0X或0x。其數(shù)碼取值為0~9,A~F或a~f。
以下是合法的十六進(jìn)制數(shù):0X2A(十進(jìn)制為42)、0XA0 (十進(jìn)制為160)、0XFFFF (十進(jìn)制為65535);
以下是不合法的十六進(jìn)制數(shù):5A (無(wú)前綴0X)、0X3H (含有非十六進(jìn)制數(shù)碼)。
4) 整數(shù)的后綴
可以用后綴“L”或“l”來(lái)表示長(zhǎng)整型數(shù)。例如:
十進(jìn)制長(zhǎng)整型數(shù):158L (十進(jìn)制為158)、358000L (十進(jìn)制為358000);
八進(jìn)制長(zhǎng)整型數(shù):012L (十進(jìn)制為10)、077L (十進(jìn)制為63)、0200000L (十進(jìn)制為65536);
十六進(jìn)制長(zhǎng)整型數(shù):0X15L (十進(jìn)制為21)、0XA5L (十進(jìn)制為165)、0X10000L (十進(jìn)制為65536)。
長(zhǎng)整型數(shù)158L和基本整型數(shù)158 在數(shù)值上并無(wú)區(qū)別。但對(duì)158L,因?yàn)槭情L(zhǎng)整型數(shù),C編譯系統(tǒng)將為它分配4個(gè)字節(jié)存儲(chǔ)空間。而對(duì)158,因?yàn)槭腔菊,只分? 個(gè)字節(jié)的存儲(chǔ)空間。因此在運(yùn)算和輸出格式上要予以注意,避免出錯(cuò)。
無(wú)符號(hào)數(shù)也可用后綴表示,整型數(shù)的無(wú)符號(hào)數(shù)的后綴為“U”或“u”。例如:358u、0x38Au、235Lu均為無(wú)符號(hào)數(shù)。
前綴,后綴可同時(shí)使用以表示各種類型的數(shù)。如0XA5Lu表示十六進(jìn)制無(wú)符號(hào)長(zhǎng)整型數(shù)A5,其十進(jìn)制為165。
幾個(gè)整型變量的定義:
int a,b,c; // a,b,c為整型變量
long x,y; // x,y為長(zhǎng)整型變量
unsigned p,q; // p,q為無(wú)符號(hào)整型變量
【例3-2】整型變量的定義與使用。
#include
int 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);
return 0;
}
整型數(shù)據(jù)的溢出
【例3-3】整型數(shù)據(jù)的溢出。
#include
int main(){
int a,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
return 0;
}
注意:以上結(jié)果是在TC2.0下得出的;在VC6.0下,輸出值是 32767, 32768。因?yàn)?int 類型在 TC2.0下默認(rèn)是short int,占2個(gè)字節(jié),在VC6.0下默認(rèn)是 long int,占4個(gè)字節(jié),32768不會(huì)導(dǎo)致溢出。將 a = 32767 改成 a = 2147483647 后即可看到溢出。
【例3-4】不同類型變量賦值
#include
int 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);
return 0;
}
從程序中可以看到:x、y是長(zhǎng)整型變量,a、b是基本整型變量。它們之間允許進(jìn)行運(yùn)算,運(yùn)算結(jié)果為長(zhǎng)整型。但c、d被定義為基本整型,因此最后結(jié)果為基本整型。
【C語(yǔ)言整型數(shù)據(jù)分析】相關(guān)文章:
C語(yǔ)言實(shí)型數(shù)據(jù)07-02
C語(yǔ)言程序分析08-27
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)樹(shù)雙親表示法實(shí)例分析09-13
C語(yǔ)言字符數(shù)據(jù)的合法形式10-17
C語(yǔ)言數(shù)據(jù)類型轉(zhuǎn)換09-06
C語(yǔ)言的宏定義分析09-10