具体的(機能的)にはC言語に真偽値は無いが、
抽象的(意味上)には真偽はある、と何度も何度も言ってるのだがなぁ。
そして、意味の上での真偽値は、いつでも整数値に格下げできると。
逆に、整数値を、意味の上での真偽値に格上げするのは、
ダウンキャストになるから、いつでも正しいとは限らないと。