■この記事の概要
C言語のif文では、条件式にゼロは「偽」、非ゼロは「真」として扱われますが、非ゼロが必ずしも「1」であるとは限りません。
本記事では、この仕組みの詳細を解説し、コード例を使って具体的な動作を確認します。
また、条件式の評価方法を初心者にもわかりやすく説明しています。
■C言語の条件式は式なら何でも良い
// ゼロは偽で非ゼロは真
#include <stdio.h>
#include <stdbool.h>
int main(void){
if(0) { //ゼロは偽
puts("来ない");
} else { //非ゼロは真
if((1+1==2) == true){
if(1+1==2){
if(1+1){
if(2){
if(true){
if(1){
puts("来る");
}
}
}
}
}
}
}
}
C言語の条件式には
式であれば何でも書けます。
0とか1の定数も単純な式なので
if文の条件式に記述出来ます。
式の結果
0は偽、
非ゼロは真と判断されます。
ここで
非ゼロは真だが1とは限らない事に
注意してください。
■問題
●実行結果
※C90以前の古い仕様のCコンパイラでは
<stdbool.h>が無くコンパイルエラーになります。
参考:
EXP20-C. 成功、真偽、等価を判定するには明示的な検査を行う