予約語 (C言語)
出典: フリー百科事典『ウィキペディア(Wikipedia)』
この項目は、プログラムの細かい説明には立ち入らず、他の言語の予約語と比較できるような説明を目的としている。
目次 |
[編集] Cの予約語の特徴
[編集] 型に関する予約語
C++やJavaとほぼ共通の予約語を使用している。ただし、C99で導入された _Bool, _Complex, _Imaginary, restrict は、他の言語では見られない。
- 整数型
- _Bool, char, short, int, long
- long は2つ続けて long long とすることで、64ビット以上の精度をもつ1つの型を表す。Cでは論理値を表現する _Bool 型も一種の整数型として扱われる。なお、true や false は予約語ではなく、単なるマクロとして扱われる。
- _Bool, char, short, int, long
- 符号の有無
- signed, unsigned
- signed および unsigned は、整数型の前後に付加することによって符号の有無を指定する。
- signed, unsigned
- 浮動小数点型
- float, double
- double は long と組み合わせて long double 型を表す際にも使用する。
- float, double
- 複素数型
- _Complex, _Imaginary
- _Imaginary は厳密には複素数型ではなく虚数型であり、すべての処理系でサポートされるわけではない。これらは直前に浮動小数点型を伴って精度を指定する。
- _Complex, _Imaginary
記述例: double _Complex z = 1.2 + 3.4 * I;
記述例:
struct my_type
{
int a;
double b;
};
- 型修飾子
- volatile, const, restrict
- volatile はコンパイラの最適化を抑止する。
- const はオブジェクトが書き換えられないことを明示する。
- restrict はオブジェクトへのアクセスが常にそのポインタを用いて行われることを明示する。
- volatile, const, restrict
- 記憶クラス指定子
- auto, extern, static, register
- auto は宣言したブロック内のみで有効。関数が終了すると消滅。記憶クラス指定子を省略した場合デフォルトでautoとなる。そのため実際上使用されていない。B言語のauto指定子との互換を意識したもの。
- extern は他のモジュール内で定義されている変数を使う際に使う。
- static は静的変数。autoとは異なり関数が終了しても消滅せず、再び同じ関数を呼び出した場合は前回の値がそのまま残っている。関数外でstatic宣言した変数や関数は他のモジュールから参照できない。
- register は変数の記憶領域をCPUのレジスタに割り当てる(必ずしも割り当てられるわけではない)。それ以外はautoと同じ。
- typedef
-
詳細は「typedef」を参照
- 型に別名を付ける。これは構文上は記憶クラス指定子に分類されるが、記憶クラスと直接関係はない。
-
- auto, extern, static, register
記述例: void func(void); int a; void *p = &a;
[編集] 基本的な制御に関する予約語
制御に関する予約語もC++やJavaとほぼ共通であるが、Cには例外処理に関する予約語(try, catch, throw等)は存在しない。
- 条件分岐
- if, else,
- switch, case, default
- 繰返し
- for, while, do
- 分岐
- goto
- ラベルの位置に分岐する。
- continue
- ループの先頭に戻る。
- break
- ループのブロックから抜け出す。
- return
- 関数から抜け出す。返却値のあるものは値を返す。
- goto
[編集] その他の予約語
- インライン関数
- 演算子
- sizeof
- オブジェクト型、または型名をオペランドに取る単項演算子として使用する。
- sizeof

