我一直在考虑一些初学者的错误,最后我发现了if声明中的错误。我将代码扩展为:
if
int i = 0; if (i = 1 && i == 0) { std::cout << i; }
我已经看到该if语句返回 true,它cout是ias 1。如果在 if 语句i中赋值1,为什么i == 0返回true?
cout
i
1
i == 0
true
这与运算符优先级有关。
if (i = 1 && i == 0)
不是
if ((i = 1) && (i == 0))
因为两者&&和==都比 具有更高的优先级=。它真正起作用的是
&&
==
=
if (i = (1 && (i == 0)))
将结果分配1 && (i == 0)给i。因此,如果i从0then开始,i == 0则(或)也是,然后设置为。然后因为是真的,你输入 if 块并打印你分配给的值。true``1 && true``true``1``i``1``1``i
1 && (i == 0)
0
true``1 && true``true``1``i``1``1``i