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