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