【发布时间】:2012-11-07 12:09:42
【问题描述】:
我的 C++ 代码中有以下检查:
if (not obj.someBoolean) {
// some code
} else {
// some other code
}
打印语句或 gdb 确认 obj.someBoolean(bool 变量)是 false。
然而,在使用 not 运算符时,控件转到了 else 块。
有趣的是,运算符的! 变体在上述场景中使用时可以正常工作(进入if 块)。
这是我使用not 的方式的问题吗?
更新(关于场景的更多细节):
在整个代码中,我在很多地方都使用了not。但这是(始终如一地)出现此问题的一种情况。
即使以下代码也有效(转到if 块):
bool temp = not obj.someBoolean;
if (temp) {
// some code
} else {
// some other code
}
这更像是一个随机发生的点。
我很好奇为什么会导致这种行为。
【问题讨论】:
-
您使用的是什么编译器以及它的哪个版本?
-
这是我第一次看到
not,但我找不到任何参考资料(谷歌搜索“不”很难......)如果你有!,你为什么要使用它?跨度> -
@Fixxxer 这确实是 C++ 中的 alternative operator 关键字。否则 OP 会得到一个编译错误,而不是生成明显错误的代码。
-
@eternalthinker 你确定你没有在某处定义宏
not吗? -
能否提供一个小代码示例来编译和重现问题?