C & C++ FAQ
|
|
整数定数(integer constant)《C++では整数リテラル(integer literal)と呼びます》の型は、基数、値、整数定数接尾語に依存します。
たとえば1000や60000のように整数接尾語のない10進定数は、その値がint型で表現できる範囲に入っていればint型となり、そうでなくてlong型で表現できる範囲に入っていればlong型となり、そうでなければunsigned long型となります。
このような規則をまためた表を以下に示します。
接尾語のない10進定数
| int | → | | | long | → | unsigned long
|
接尾語のない8進定数/16進定数
| int | → | unsigned | → | long | → | unsigned long
|
u/U接尾語つき
| | | unsigned | → | | | unsigned long
|
l/L接尾語つき
| | | | | long | → | unsigned long
|
u/Uとl/Lと接尾語つき
| | | | | | | | unsigned long
|
接尾語のない10進定数
| int | → | | | long | → | | | long long | |
|
接尾語のない8進定数/16進定数
| int | → | unsigned | → | long | → | unsigned long | → | long long | → | unsigned long long
|
u/U接尾語つき
| | | unsigned | → | | | unsigned long | → | | | unsigned long long
|
l/L接尾語つき10進数
| | | | | long | → | | | long long | |
|
l/L接尾語つき8進数/16進定数
| | | | | long | → | unsigned long | → | long long | → | unsigned long long
|
u/Uとl/Lと接尾語つき
| | | | | | | | unsigned long | → | | | unsigned long long
|
ll/LL接尾語つき10進数
| | | | | | | | | | long long | |
|
ll/LL接尾語つき8進数/16進数
| | | | | | | | | | long long | → | unsigned long long
|
u/Uとll/LL接尾語つき
| | | | | | | | | | | | unsigned long long
|
■ 根拠 ■
標準C
| §6.1.3.2
| Integer constants
|
標準C99
| §6.4.4.1
| Integer constants
|
標準C++
| §2.13.1
| Integer literals
|