1,int 是 C 語言的基本整數類型,可以滿足我們處理一般數據的需求。
C 語言還提供了四個可以修飾 int 的關鍵字:short、long、signed,以及 unsigned。
利用這四個關鍵字,C 語言標准定義了以下整數類型:
名稱 | 全稱類型說明符 | 縮寫類型說明符 | 位數 | 范圍 |
整型 | int | int | 16位 | -32768至+32767 |
無符號整型 | unsigned int | unsigned | 16位 | 0 至 65,535 |
短整型 | short int | short | 16位 | -32768至+32767 |
無符號短整型 | unsigned short int | unsigned short | 16位 | 0 至 65,535 |
長整型 | long int | long | 32位 | -2,147,483,648 至 2,147,483,647 |
無符號長整型 | unsigned long int | unsigned long | 32位 | 0至4,294,967,295 |
2. 聲明方式
這些整數類型的聲明方式與 int 類型的聲明方式一樣。例如:long int estine; long johns; short int erns; short ribs; unsigned int s_count; unsigned players; unsigned long headcount; unsigned short yesvotes; long long ago; /* C99 特有 */ unsigned long long ego; /* C99 特有 */
如果編譯器不支持 C99 標准,那就不能使用 long long 和 unsigned long long。
3. 整數類型的選擇
如果處理的只是非負整數,那么應該優先使用 unsigned 打頭的那些整數類型。
如果處理的整數超出了 int 所能表示的范圍,並且編譯器中,long 的表示范圍比 int 大,那就使用 long。
不過,若非必要,盡量不要用 long,因為它可能會降低程序運行效率。
有一點要注意:如果編譯器中,long 和 int 都是 32 位的,並且您需要使用 32 位整數,那么應該用 long,而不要用 int。
只有這樣,程序才可以安全地移植到 16 位的計算機,因為 16 位的計算機中,int 一般也是 16 位的。
類似地,如果要使用 64 位整數,那就用 long long。
如果 int 是 32 位的話,那么使用 short 可以節省空間,不過得確保您要處理的整數不會超出 short 的表示范圍。這種“節省”對內存大的計算機來說,是沒什么意義的。
4. long 型常量和 long long 型常量
一般來說,整數常量是被當作 int 類型來存儲的。
如果使用的整數常量超出了 int 的表示范圍,C 語言規定編譯器自動使用 unsigned int 來處理這個常量。
如果 unsigned 也不足以表示這個常量的話,編譯器就會用 long。
如果還表示不了的話,那就依次用 unsigned long,long long,unsigned long long。
如果 unsigned long long 也表示不了,那么編譯器就沒轍了。
注意:long long 和 unsigned long long 是 C99 特有的。
例如:如果 int 是 16 位的話,它就表示不了常量 1000000。編譯器會使用 long 來處理這個常量,因為 unsigned int 也表示不了 1000000 。
同樣,十六進制和八進制整數常量通常也是被作為 int 來處理。但是,當我們使用的常量超出了 int 的表示范圍后,編譯器會依次使用unsigned int,long,unsigned long,long long 和 unsigned long long。直到所使用的類型足以表示那個常量為止。
有時,使用的是較小的常量,但是希望這個常量被當作 long 來處理,這就需要在這個常量后面加上后綴 l(小寫字母 l)或者 L(大寫字母 L)。
同樣,十六進制和八進制整數常量通常也是被作為 int 來處理。但是,當我們使用的常量超出了 int 的表示范圍后,編譯器會依次使用unsigned int,long,unsigned long,long long 和 unsigned long long。直到所使用的類型足以表示那個常量為止。
有時,使用的是較小的常量,但是希望這個常量被當作 long 來處理,這就需要在這個常量后面加上后綴 l(小寫字母 l)或者 L(大寫字母 L)。
應該避免使用 l ,因為 l 容易和數字 1 混淆。
例如:整數常量 7 是被作為 int 來處理的,但整數常量 7L(或者 7l)是被作為 long 來處理的。
類似地,在整數常量后面加上后綴 ll 或者 LL ,這個常量就會被當作 long long 來處理。
例如:3LL 。如果想使用無符號整數常量的話,還要配合使用后綴 u 或者 U 。
例如:2u,3U,4Lu,5ul,6LU,7LLU,8Ull,9uLL 。
這些后綴也可以用於十六進制和八進制整數常量。例如:020L,010LL,0x30uL,0x40ull。
這些后綴也可以用於十六進制和八進制整數常量。例如:020L,010LL,0x30uL,0x40ull。