| 進制 | 前綴 | 合法數字 | 範例 |
|---|---|---|---|
| 十進制 | 無(首位非0) | 0-9 | 123, 4567 |
| 八進制 | 0 | 0-7 | 0173, 077 |
| 十六進制 | 0x / 0X | 0-9, a-f, A-F | 0x1F, 0XABC |
int → long → unsigned long(視數值大小)。int → unsigned int → long → unsigned long。L/l 強制指定為 long(如 10L)。C 語言要求變量使用前必須定義類型。不同整型混合運算時,遵循整型提升與尋常算術轉換:
char、short、位域、枚舉類型提升為 int(若 int 能容納所有值),否則為 unsigned int。signed 優先,無法完整表示時轉 unsigned。int d = -1;
if (d <= sizeof(arr)/sizeof(arr[0])) // sizeof 回傳 size_t (unsigned)
// 條件永遠為真!因為 -1 被轉為極大無號數
解決:強制轉型 (int)(sizeof(arr)/sizeof(arr[0])),或盡量使用有號類型表示數量。
printf)仍會提升。