我一直在考虑一些初学者的错误,最后我发现了 if
语句中的错误。我将代码扩展为:
int i = 0;
if (i = 1 && i == 0) {
std::cout << i;
}
我已经看到 if
语句返回 true,它 cout
的 i
as 1
如果在if语句中 i
被赋值为 1
,为什么 i == 0
返回 true
原文由 TehMattGR 发布,翻译遵循 CC BY-SA 4.0 许可协议
我一直在考虑一些初学者的错误,最后我发现了 if
语句中的错误。我将代码扩展为:
int i = 0;
if (i = 1 && i == 0) {
std::cout << i;
}
我已经看到 if
语句返回 true,它 cout
的 i
as 1
如果在if语句中 i
被赋值为 1
,为什么 i == 0
返回 true
原文由 TehMattGR 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
这与 运算符优先级 有关。
不是
因为
&&
和==
的优先级高于=
。它真正起作用的是它将
1 && (i == 0)
的结果分配给i
。 So, ifi
starts at0
theni == 0
istrue
, so1 && true
istrue
(或1
),然后i
设置为1
。然后由于1
为真,您输入 if 块并打印您分配给i
的值。