データ型モデル・規格Cごとの接尾語なし10進定数の型の違い
個人的メモです。
データ型モデル
char | short | int | long | long long | void * | |
---|---|---|---|---|---|---|
ILP32 | 8 | 16 | 32 | 32 | 64 | 64 |
LP64 | 8 | 16 | 32 | 64 | 64 | 64 |
規格Cごとの接尾語なしの10進定数の型について。
以下のうち、その定数がオーバーフローしないような最小の型が選ばれる*1。
C89 | int, long, unsigned long |
---|---|
C99 | int, long, long long |
データ型モデル・規格Cごとの接尾語なし10進定数(「-」は動作未定義)
2の冪乗 | 10進定数 | ILP32/C89 | ILP32/C99 | LP64/C89 | LP64/C99 |
---|---|---|---|---|---|
0〜2^31-1 | 0〜2,147,483,647 | int | int | int | int |
2^31〜2^32-1 | 〜4,294,967,295 | unsigned long*2 | long long | long | long |
2^32〜2^63-1 | 〜9,223,372,036,854,775,807 | - | long long | long | long |
2^63〜2^64-1 | 〜18,446,744,073,709,551,615 | - | - | unsigned long*3 | - |