【C言語】
if文の条件式はゼロは偽で
非ゼロは真だが
非ゼロが1とは限らない

ゼロは偽で 非ゼロは真だが 非ゼロが1とは限らない

if文等の条件式は
関係演算子(>,>=,<,<=)や
等値演算子(==,!=)がなくてもOK!

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とは限らない事に
注意してください。


■問題

1
コンパイル&実行結果を予想してください

●実行結果

./a.out
来る
※C90以前の古い仕様のCコンパイラでは
<stdbool.h>が無くコンパイルエラーになります。

参考:

EXP20-C. 成功、真偽、等価を判定するには明示的な検査を行う