>>
まず int 型の i が 0 で初期化される。
つぎに、i が 0 以外なら i に 0 が代入され、
そうでないなら、i に 1 が代入される。

>>150
C言語において、整数の 1 や 2 の真偽を問う必要性が無い。
例えば、if文は、0と比べてどうか、という価値観で分岐しているだけであって、
真偽で分岐しているわけではない。