BohYoh.comトップページへ
C & C++ FAQ
目次

C C++ 整数定数の型は何ですか。

 整数定数(integer constant)《C++では整数リテラル(integer literal)と呼びます》の型は、基数、値、整数定数接尾語に依存します。
 たとえば1000や60000のように整数接尾語のない10進定数は、その値がint型で表現できる範囲に入っていればint型となり、そうでなくてlong型で表現できる範囲に入っていればlong型となり、そうでなければunsigned long型となります。
 このような規則をまためた表を以下に示します。

C / C++
接尾語のない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

C99
接尾語のない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

戻る

BohYoh.comロゴ