>>230 >>240
読み飛ばしてたごめん。

if 文は 真偽を評価するわけではない。
ただ、0でないか、0と等しいか、で分岐するだけ。
>if( 0以外 )
は 0 と等しくないので、以降に続くブロックは実行される。
結局、0以外が「真」と評価された、かどうかまでは判らない。
C言語には元々真偽はなく、整数で代用されている。
C言語で言うところの真偽は、意味上のものでしかない。