int 基本整型;short int/short 短整型(較小);long int/long 長整型(較大)。int 可省略。
short a = 10; long m = 102023;
C 標準僅限制:
short ≥ 2 字節int 建議為機器字長(32位=4字節,64位=8字節)short ≤ int ≤ long| 環境 | short | int | long |
|---|---|---|---|
| 16位 | 2 | 2 | 4 |
| 32位 Win/Linux/OS X | 2 | 4 | 4 |
| Win64 | 2 | 4 | 4 |
| Unix-like 64位 | 2 | 4 | 8 |
long 在 64 位平台差異最大,移植性需注意。
#include <stdio.h>
int main() {
short a = 10; int b = 100; long c = 1000; char d = 'X';
int a_len = sizeof a; // 變量可省略 ()
int b_len = sizeof(int); // 類型必須帶 ()
printf("a=%d, b=%d, c=%d, d=%d\n", a_len, b_len, sizeof(c), sizeof(char));
return 0;
}
Win7 輸出:
a=2, b=4, c=4, d=1
sizeof 是運算符非函數,故可不帶括號。
0 開頭。015 (十進制13)、-0101 (-65)。0x/0X 開頭。0X2A (42)、0xffff (65535)。| 類型 | 十進制 | 八進制 | 十六進制 |
|---|---|---|---|
| short | %hd | %ho | %hx/%hX |
| int | %d | %o | %x/%X |
| long | %ld | %lo | %lx/%lX |
加 # 輸出前綴:%#o → 0270、%#x → 0x2f、%#X → 0X2F。十進制無前綴,%d 與 %#d 同。
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);
printf("c(x)=%x, c(#x)=%#x, c(X)=%X, c(#X)=%#X\n", c, c, c, c);
輸出:
a(d)=100, d(#d)=100
a(o)=270, d(#o)=0270
c(x)=2f, c(#x)=0x2f, c(X)=2F, c(#X)=0X2F