【C++言語】整数リテラル【基本と応用】
整数リテラルとは
「整数リテラル」とは、プログラムの中で整数値を直接記述するための方法です。C++では、整数リテラルを使って、計算の基になる値を定義することができます。例えば、変数に値を代入する際に使うことが多いです。
整数リテラルの基本的な形式
整数リテラルの基本的な形式は、単純に数値をそのまま書くだけです。例えば、次のように書くことができます。
int a = 123; int b = 456;
ここで、123
や456
は整数リテラルです。これらはプログラムの中でそのまま使用される数値として機能します。
整数リテラルの種類
C++では、整数リテラルにいくつかの種類があります。それぞれ、基数(進数)や接尾辞に応じて異なる意味を持ちます。以下に代表的な種類を示します。
10進数リテラル
最も一般的な整数リテラルは、10進数で記述されるものです。例えば、123
、456
は10進数リテラルです。
8進数リテラル
8進数で表現された整数リテラルは、先頭に0
を付けることで表現します。例えば、075
は8進数の75
を表します。
int octal = 075; // 8進数リテラル
16進数リテラル
16進数リテラルは、先頭に0x
または0X
を付けることで表現します。例えば、0x1A
は16進数の1A
、つまり10進数で26に相当します。
int hex = 0x1A; // 16進数リテラル
2進数リテラル(C++14以降)
C++14以降では、2進数リテラルがサポートされています。2進数リテラルは、先頭に0b
または0B
を付けて表現します。例えば、0b1010
は2進数で1010
、つまり10進数で10に相当します。
int bin = 0b1010; // 2進数リテラル
整数リテラルの基数(進数)
C++では、整数リテラルの基数を指定することで、異なる進数の数値を表現できます。前述の通り、基数は10、8、16、2のいずれかを指定できます。これにより、数値の表現方法を柔軟に変更できます。
例えば、次のように異なる基数を使って同じ数値を表現できます:
int decimal = 100; // 10進数 int octal = 0144; // 8進数 int hex = 0x64; // 16進数 int binary = 0b1100100; // 2進数
いずれも、10進数で100に相当しますが、異なる進数で記述されています。
整数リテラルにおける接尾辞
C++では、整数リテラルに接尾辞を付けることで、リテラルの型を明示的に指定することができます。これにより、リテラルが格納される変数の型を正しく管理できます。
接尾辞「U
」
U
を付けることで、リテラルが符号なし整数型であることを示します。
unsigned int u = 100U; // 符号なし整数リテラル
接尾辞「L
」
L
を付けることで、リテラルが長整数型(long)であることを示します。
long l = 100L; // 長整数リテラル
接尾辞「UL
」
UL
を付けることで、符号なしの長整数型(unsigned long)を示します。
unsigned long ul = 100UL; // 符号なし長整数リテラル
整数リテラルを使用した例
整数リテラルは、変数に代入する以外にも計算式の中で使用することができます。例えば、次のように使えます。
int a = 10; int b = 20; int sum = a + 5; // 10 + 5 int product = b * 3; // 20 * 3
また、整数リテラルを関数の引数に渡すことも可能です。
void printValue(int value) { std::cout << "Value: " << value << std::endl; } printValue(100); // 整数リテラル100を渡す
注意点とよくある間違い
整数リテラルを使用する際には、いくつか注意点があります。例えば、8進数や16進数を記述する際に間違えて0
や0x
を省略してしまうことがあります。
また、符号なし整数リテラルに対して符号付き整数型を使用した場合、型の範囲を超えた場合にはオーバーフローが発生することがあります。このような場合、リテラルの型を変更するか、適切な範囲の数値を使用することが重要です。
さらに、整数リテラルに接尾辞を付けることを忘れると、意図しない型変換が行われる可能性があるため、慎重に使用しましょう。