BOOL frog = -1;この frogはどういう状態かと言うと
「偽でない」かつ「真でもない」という値になっている。じゃあ誰なんだお前は、と。
if(frog == TRUE) ← NO!! if(frog == FALSE) ← NO!!お前BOOLじゃねーのかよとw カエルかよとw
C/C++の常識だけどBOOL型というのは数値の「1」がTRUEで「0」がFALSEで if文では「0」以外は全部TRUE判定(だったかな?)になる。
実際は真を期待して「if(frog)」とか逆に「if(!frog)」って書くことが多いから問題にはなることは少ないが、frogが実は
Javaから入ったプログラマにこの言語壊れてる、と思われてもしょうがないんではないか…
無駄な抵抗だと思いますが、BOOL型、TRUE、FALSEは一切使わずbool型、true、falseを使うようにしてます。しかしbool型に数値を代入出来たり、true、falseを1、0の数値として使えてしまうので完ぺきではありません…
Cで良く見る「if(!somePtr){/* ぬるぽ */}」というNULLチェックは「ポインタも実は数値」なことと「数値が真偽値として使える」ことと「NULLがFALSEと同じ0で定義されてる」ことを利用して行われてます。
酷い方法だと思いますw
無駄な抵抗だと思いますが自分で書く場合だけは「if(somePtr == NULL){/* ぬるぽ */}」 としてます。(無駄ジャンと言われて消されるような気もしますが…)
0 件のコメント:
コメントを投稿