也就意味著,使用了 unsigned 只能表示正數(shù),不能表示負(fù)數(shù)了。
輸出無符號(hào)數(shù)使用 %u
整數(shù)的前綴
在程序中是根據(jù)前綴來區(qū)分十進(jìn)制、八進(jìn)制和十六機(jī)制的。
1) 十進(jìn)制數(shù)由 0~9 十個(gè)數(shù)字組成,沒有前綴。例如:合法的十進(jìn)制數(shù):237、-568、65535、1627;
不合法的十進(jìn)制數(shù):023(不能有前導(dǎo)0)、23D(含有非十進(jìn)制數(shù)碼)。
2) 八進(jìn)制數(shù)由 0~7 八個(gè)數(shù)字組成,必須以0開頭,即以0作為八進(jìn)制數(shù)的前綴。例如:合法的八進(jìn)制數(shù):015(十進(jìn)制為13)、-0101(十進(jìn)制為-65)、0177777(十進(jìn)制為65535);
不合法的八進(jìn)制數(shù):256(無前綴0)、03A2(包含了非八進(jìn)制數(shù)碼)。
注意前綴是數(shù)字0,而不是字母o。
3) 十六進(jìn)制數(shù)由數(shù)字0~9、字母A~F或a~f組成,前綴為0X或0x。例如:合法的十六進(jìn)制數(shù):0X2A(十進(jìn)制為42)、-0XA0(十進(jìn)制為-160)、0xffff(十進(jìn)制為65535);
不合法的十六進(jìn)制數(shù):5A(無前綴0X)、0X3H(含有非十六進(jìn)制數(shù)碼)。
在C語言中不能直接表示二進(jìn)制,它沒有特定的前綴。
整數(shù)的后綴
1) 可以用后綴L或l來表示長整型數(shù)。
例如:十進(jìn)制長整型數(shù):158L、358000L;
八進(jìn)制長整型數(shù):012L、077L、0200000L;
十六進(jìn)制長整型數(shù):0X15L (十進(jìn)制為21)、0XA5L、0X10000L。
長整型數(shù)158L和基本整型數(shù)158 在數(shù)值上并無區(qū)別,但由于 158L 是長整型數(shù),編譯器將為它分配 sizeof(long) 字節(jié)的存儲(chǔ)空間。
2) 可以用后綴U或u來表示無符號(hào)數(shù),
例如 358u、0x38Au等。
前綴、后綴可以同時(shí)使用以表示各種類型的整數(shù)。
例如 0XA5Lu 表示十六進(jìn)制無符號(hào)長整型數(shù) A5,其十進(jìn)制為165。實(shí)際開發(fā)中經(jīng)常使用前綴,但較少使用后綴,因?yàn)閷⒄麛?shù)賦值給變量時(shí)就確定了它是否為 long 類型、是否為 unsigned 類型。
實(shí)際開發(fā)中使用 %d 和 %ld 足以,幾乎不使用 %hd。
輸出十進(jìn)制使用%d,輸出八進(jìn)制使用%o,輸出十六進(jìn)制使用%x或%X。如果希望帶上前綴,可以加#,例如 %#d、%#o、%#x、%#X。
int a=100,b=0270,c=0X2F;
printf("a(d)=%d, d(#d)=%#d\\n",a,a);
printf("a(o)=%o, d(#o)=%#o\\n",b,b);
%o、%x、%X 都是以無符號(hào)形式輸出。