ちと訂正
そもそも if( a==b ) は if 文が 真偽を判定 しているんじゃない。
返ってきた値で、0でなければ、実行している。
単純に変数 a に0か0以外を入れて if(a) で試してみれば分かる。
結局、与えられた値が0か否かであって、if自身が真偽を判定しているわけではない。
あくまでも、成立した場合、偽でなければ0以外の値が与えられた時は、実行する。

よって、if( i%2 ) 自身が、奇数かを勝手に判断しているわけではないのだよ。
余りがあったとき、0以外の値が与えられて、割り切れない値が与えられたという事実が
if文によって分かるということだ。