C/C++の整数リテラル入門:プレフィックスとサフィックスの使い方を解説
本記事では、C/C++における整数リテラル、特に「プレフィックス(接頭辞)」と「サフィックス(接尾辞)」の役割について詳しく解説します。
整数リテラルとは?
整数リテラルとは、ソースコード内に直接記述される整数値のことです。C/C++では、数値の表現方法や型を細かく制御するために、リテラルに対してプレフィックスとサフィックスを付けることができます。
- プレフィックス(接頭辞):数値の基数(進数)を表します。例えば
0x10のように0xを付けると16進数として扱われます。 - サフィックス(接尾辞):数値の型を表します。例えば
8465484156155LLのようにLLを付けるとlong long型として扱われます。
主なプレフィックスの一覧
- なし:10進数(例:
213) - 0:8進数(例:
0213) - 0x / 0X:16進数(例:
0x213A) - 0b / 0B:2進数(例:
0b101※C++14以降で利用可能)
主なサフィックスの一覧
- u / U:
unsigned int型 - l / L:
long型 - ll / LL:
long long型 - ul / ull など:上記の組み合わせ(例:
12345678901234567890ullはunsigned long long型)
サンプルコード
#include <iostream>
using namespace std;
int main(){
// プレフィックスの例
cout << 213 << '\n' // 10進数
<< 0213 << '\n' // 8進数
<< 0x213A << '\n' // 16進数
<< 0b101 << '\n' // 2進数
// サフィックスの例
<< 1234567890123456789LL << '\n' // long long 型
<< 12345678901234567890ull << '\n' // unsigned long long 型
<< 12345678901234567890u; // unsigned int 型
return 0;
}
実行結果
213 139 8506 5 1234567890123456789 12345678901234567890 12345678901234567890
出力のポイント
実行結果から分かるように、0213 は8進数として解釈され10進数の 139 に、0x213A は16進数として解釈され 8506 に変換されています。また、int 型の範囲を超える大きな値を扱う場合は、LL や ull などのサフィックスを付けることで、意図した型で正しく格納できます。サフィックスを省略すると、コンパイラが自動的に型を選択するため、特に大きな数値を扱う際には明示的に指定することが推奨されます。
-
【C/C++】exit()・abort()・assert()の違いと使い方を徹底解説
C言語やC++には、プログラムの実行を途中で終了させるための関数がいくつか用意されています。代表的なものが「exit()」「abort()」「assert()」です。これらはいずれもプログラムを終了させる機能を持ちますが、動作の仕方や用途は大きく異なります。本記事では、それぞれの関数の特徴、構文、具体的な使用例をサンプルコード付きでわかりやすく解説します。 exit()とは exit()関数は、呼び出された時点でプログラムを即座に終了させ、それ以降の処理を実行しない関数です。終了時にステータス値を親プロセスへ返すことができ、標準ヘッダーファイル「stdlib.h」で宣言されています。戻り値はあ
-
【C/C++】strdup()とstrndup()で文字列を複製する方法を徹底解説
strdup()関数とはstrdup()関数は、文字列を複製(コピー)するために使用される関数です。引数として渡された文字列と同じ内容の新しいメモリ領域を確保し、NULL終端されたバイト文字列へのポインタを返します。なお、strdup()はPOSIXで定義されている関数であり、厳密にはC標準ライブラリには含まれません。内部ではmalloc()を使ってメモリを動的に確保するため、使い終わったらfree()で解放する必要がある点に注意しましょう。また、メモリ確保に失敗した場合はNULLが返されます。C言語におけるstrdup()の構文は以下の通りです。char *strdup(const char