予約語 (C言語)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

この項では、C言語予約語に関して説明する。

この項目は、プログラムの細かい説明には立ち入らず、他の言語の予約語と比較できるような説明を目的としている。

目次

[編集] Cの予約語の特徴

  • Cには37の予約語がある。
  • 組込み型の予約語や分岐処理 (if, switch)、反復処理(for, while) などの基本的な予約語は、C++Javaでもほぼそのまま取り入れられている。

[編集] 型に関する予約語

C++やJavaとほぼ共通の予約語を使用している。ただし、C99で導入された _Bool, _Complex, _Imaginary, restrict は、他の言語では見られない。

  • 整数型
    _Bool, char, short, int, long
    long は2つ続けて long long とすることで、64ビット以上の精度をもつ1つの型を表す。Cでは論理値を表現する _Bool 型も一種の整数型として扱われる。なお、true や false は予約語ではなく、単なるマクロとして扱われる。
  • 符号の有無
    signed, unsigned
    signed および unsigned は、整数型の前後に付加することによって符号の有無を指定する。
  • 浮動小数点型
    float, double
    double は long と組み合わせて long double 型を表す際にも使用する。
  • 複素数
    _Complex, _Imaginary
    _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

    詳細は「typedef」を参照

    型に別名を付ける。これは構文上は記憶クラス指定子に分類されるが、記憶クラスと直接関係はない。
  • その他の型
    void
    引数や返却値のない関数で使用する。また、特定の型を指さないポインタ型にも使用する。
記述例:
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
    関数から抜け出す。返却値のあるものは値を返す。

[編集] その他の予約語

  • インライン関数
    inline
    関数指示子に使用することで、関数インライン展開するためのヒントをコンパイラに与える。
  • 演算子
    sizeof
    オブジェクト型、または型名をオペランドに取る単項演算子として使用する。

[編集] 関連項目