キーワード | 効果 |
---|---|
auto | 変数の寿命を指定します。 autoが指定された変数は定義されたブロックが終了すると消滅します。 この寿命は何も指定していない時と同じであり、書く意味は多分ありません。(笑) 実際、見たことありません(笑) |
static | 変数の寿命を指定します。 staticが指定された変数はプログラム全体の終了まで維持されます。 初期化式を記述している場合は始めて定義行を通過した時のみ初期化され、2度目以降は無視されます。 |
const | 変数へのアクセスを指定します。 constが指定された変数は読み取り専用になり、内容を変更することが禁止されます。(初期化は可能) また、ポインタ型の場合は参照先が読み取り専用になり、保持しているアドレスは変更できます。 |
signed | 変数の内部表現と保持範囲を指定します。 signedが指定された変数は最上位ビットを正負を表すフラグとして扱います。 多くの環境では省略時もsignedとして扱うので、char型以外は多くの場合、指定は不要です。 |
unsigned | 変数の内部表現と保持範囲を指定します。 unsignedが指定された変数は全てのビットを値として扱います。 負数を保持することができなくなりますが、その代わり正数を2倍保持できます。 -1には絶対にならなくなるので、unsigned変数との比較条件に「0以上」とか書いちゃダメです。条件になってません(笑) |
register | 変数の確保方法について指定します。 registerが指定された変数は実行時にできる限り高速に参照できるように配置するよう要求されます。 基本的にはレジスタへの確保を試みますが、レジスタの数は多くないため、できなかった場合は通常と同じです。 また、register変数はポインタ値(アドレス)を得られません。 |
volatile | 変数の扱いについて指定します。 volatileが指定された変数はコンパイラが感知できない方法で値が変更されるかもしれないことを宣言します。 複数のスレッド等が同じ変数を共有するような、高度な並列処理を行う場合に使用します。 |
struct | 変数の型名について指定します。 structが指定された変数の型名は「構造体タグ名」を指定することを宣言します。 C++では構造体タグ名を型名にする場合でもこの指定は不要です。 |
union | 変数の型名について指定します。 unionが指定された変数の型名は「共用体タグ名」を指定することを宣言します。 C++では共用体タグ名を型名にする場合でもこの指定は不要です。 |
enum | 変数の型名について指定します。 enumが指定された変数の型名は「列挙型タグ名」を指定することを宣言します。 C++では列挙型タグ名を型名にする場合でもこの指定は不要です。 |