変数型の前につくもの
記憶クラス指定子 (Storage Class Specifiers)
記憶クラス指定子は、C言語およびC++言語で変数や関数のメモリ割り当てと寿命を制御するためのキーワードです。
auto: ローカル変数のデフォルト指定子。通常は省略可能。
register: レジスタ変数として割り当てることを要求する指定子。
static: 静的変数と静的関数を宣言するための指定子。静的変数はメモリに保持され、初期化された値を保持し続ける。静的関数はファイルスコープを持ち、他のファイルからはアクセスできない。
extern: 外部変数と外部関数を宣言するための指定子。他のファイルからアクセス可能。
typedef: 新しい型のエイリアス(別名)を作成するための指定子。新しい型名を宣言する際に使用され、プログラム内で独自の型を定義するのに役立つ。
mutable (C++): クラスのメンバー変数に使用され、その変数をクラスの const メンバー関数内でも変更可能にする指定子。
_Thread_local (C11およびC++11以降): スレッドローカル変数を宣言するための指定子。
型修飾子 (Type Qualifiers)
型修飾子は、変数やデータ型の性質を制御するために使用されます。
const: 変数が読み取り専用であることを示し、値を変更できないようにします。
volatile: 変数が予期せぬ変更を持つことを示し、最適化されないようにします。
restrict: ポインタが指し示すメモリ領域に対する別のポインタが存在しないことを示し、最適化に関与します。
_Atomic: 多重スレッド環境でのアトミック操作を可能にする型修飾子。
volatile _Atomic: アトミック変数での予期せぬ変更を示す。
サイズ修飾子 (Size Modifiers)
サイズ修飾子は、整数型(int、char、floatなど)のサイズを制御します。
short: 整数型のビット幅を短くし、通常の int よりも小さな範囲の整数を格納できるようにします。
long: 整数型のビット幅を長くし、通常の int よりも大きな範囲の整数を格納できるようにします。
signed (省略可能): 符号付き整数型を示し、通常の整数型が符号付きであることを指定します。
unsigned: 符号なし整数型を示し、整数型が符号を持たないことを指定します。
long long: より長い整数型で、通常の long よりも大きな範囲の整数を格納できるようにします。
これらの修飾子は、変数や型の性質を制御し、プログラムの正確性やパフォーマンスを向上させるのに役立ちます。プログラムの要件に合わせて適切な修飾子を選択することが重要です。