C言語のtrueって、保証されているのは
true == !0;
であって、
true == 1;
かどうかはコンパイラ依存だったっけ?