Shammer's Philosophy

My private adversaria

Cにはbooleanがない

Javaをやっていた自分からみて以外だった事実の一つがCにはboolean型がない、ということ。
0だとfalseとして扱われ、それ以外はtrueとして扱われるようだ。
while(true){ ... とJavaで書くような処理は、while(1){ ... という感じで書くようだ。
なんか変な感じ。もちろん、!= や < 演算子を利用して判定文を書くこともできる。
こうした判定文自体が0かそれ以外の数値を返すということなのだろうか。
単にreturn 0とやっているような関数でも判定文として使うことができる。


int main() {
 if( judge() ){ printf("This is a pen.\n");}
 else{ printf("This is an eraser.\n");}
}
int judge(){ return 0; }


となっていれば、このアプリを実行すれば絶対に This is an eraser. が画面出力される。
Java では boolean を返していたところがCでは単に 0 かそれ以外の int を返すというだけか。。。


そう考えると単純なのかもしれないが、やっぱり boolean 型はあった方がわかりやすいかも。
後発言語だからその辺はより人間の思考に近づいているのかもしれない。