C++でboolの演算
パッと見で全然分からなかったバグコード
if(!this-IsComplete()) { return true; }
想定の逆が返ってくるからなんだろうとよくみると、「this->」のつもりが「this-」になってた。
コンパイル通るもんだねぇ。
「!this - IsComplete()」つまり、thisアドレスに対して!した結果引くIsCompleteの結果ということ。
!thisは常にfalseになるので「false - (true or false)」という演算になっていた模様。
気になったからVS2008でbool同士の演算をやってみた
演算子 | 結果 | ||
true | + | true | true |
true | + | false | true |
false | + | true | true |
false | + | false | false |
true | - | true | false |
true | - | false | true |
false | - | true | true |
false | - | false | false |
true | * | true | true |
true | * | false | false |
false | * | true | false |
false | * | false | false |
true | / | true | true |
true | / | false | error C2124: 除算、剰余演算が 0 で行われています |
false | / | true | false |
false | / | false | error C2124: 除算、剰余演算が 0 で行われています |