通过下面的代码,您可以看到表达式 a = !b的值是 !false(即 true) ,然后您可以通过检查 a的值(也是 true)来看到赋值已经发生。
#include <iostream>
int main()
{
bool a = false;
bool b = false;
if(a)
printf("a is true!\n");
else
printf("a is false!\n");
if(a = !b)
printf("expression is true!\n");
else
printf("expression is false!\n");
if(a)
printf("a is true!\n");
else
printf("a is false!\n");
}
可能,开发人员试图将 b的布尔否定分配给 a,他/她犯了一个输入错误,忘记在等号后面加一个空格。无论如何,这是编译器解释它的方式。
根据 < a href = “ http://en.wikipedia.org/wiki/Operators _ in _ C _ and _ C + +”> c + + 中的运算符优先级 :