小编典典

为什么这个结合赋值和相等检查的 if 语句返回 true?

all

我一直在考虑一些初学者的错误,最后我发现了if声明中的错误。我将代码扩展为:

int i = 0;
if (i = 1 && i == 0) {
    std::cout << i;
}

我已经看到该if语句返回 true,它coutias 1。如果在 if 语句i中赋值1,为什么i == 0返回true


阅读 63

收藏
2022-06-15

共1个答案

小编典典

这与运算符优先级有关。

if (i = 1 && i == 0)

不是

if ((i = 1) && (i == 0))

因为两者&&==都比 具有更高的优先级=。它真正起作用的是

if (i = (1 && (i == 0)))

将结果分配1 && (i == 0)i。因此,如果i0then开始,i == 0则(或)也是,然后设置为。然后因为是真的,你输入
if 块并打印你分配给的值。true``1 && true``true``1``i``1``1``i

2022-06-15