C++ コードに次のチェックがあります。
if (not obj.someBoolean) {
// some code
} else {
// some other code
}
obj.someBoolean
print ステートメントまたは gdb は、 (bool
変数) が であることを確認しますfalse
。
それでも、演算子 else
を使用している間、制御はブロックに行きます。not
興味深いことに、上記のシナリオ (ブロック !
に入る) で使用すると、さまざまな演算子が正しく機能します。if
これは私が使用している方法に問題がありnot
ますか?
更新(シナリオの詳細):
コード全体を通して、私はnot
多くの場所で使用しました。しかし、これはこの問題が (一貫して) 発生する 1 つのシナリオです。
次のコードでも機能します (if
ブロックされます)。
bool temp = not obj.someBoolean;
if (temp) {
// some code
} else {
// some other code
}
これは、それが起こっている単一のランダムなポイントに似ています。
なぜこの動作が引き起こされるのか、私は興味がありました。