BohYoh.comトップページへ
C & C++ FAQ
目次

C C++ if (x) … とは何ですか。

■実現例1
    if (x)
        printf("○");
    else
        printf("×");

■実現例2
    if (x == 0)
        printf("×");
    else
        printf("○");

■実現例3
    if (x != 0)
        printf("○");
    else
        printf("×");
 右に示すのは、いずれもxの値が0でなければ"×"を、0であれば"○"を表示するプログラムです。三つの実現例がありますが、この中でCやC++に特有なのが《実現例1》です。
 というのも( )の中が、単独の式となっていますが、他の言語では、真偽を表すための論理型でなければならないことが多いため、≪実現例2≫や≪実現例3≫のようにしなければならないことが多いのです。
 さてCとC++のif文
  if (式) 文1 else 文2
では、( )中の式の値が非0であれば文1を、そうでなければ文2を実行することになっています。
 したがって、《実現例1》が最も素直といえますし、熟練したC/C++プログラマは、このような表記を好みます。
 等しいかどうか、等しくないかどうかを判断する演算子である==と!=は、成立すればint型の1を、そうでなければint型の0という値を生成します。
 したがって、《実現例2》は、もしxが0であれば、式x == 0を評価した値が1となり、式の値が非0であるから"○"と表示される、という2段階を踏むことになります。また、≪実現例3≫も同様です。
 なお、多くのコンパイラは、≪実現例2≫や≪実現例3≫であっても、実現例1と同等なコードを出力しますので、実行速度が低下するといった心配は、まず不要です。


■ 根拠 ■
標準C §6.6.4.1 The if statement
標準C99 §6.8.4.1 The if statement
標準C++ §6.4.1 The if statement

戻る

BohYoh.comロゴ