C++11 为什么i等于-1?; 我的C++代码如下: #include <iostream> using namespace std; int main() { int i = 0; cout << (i=0) << endl; if(i=0) { i=1; } cout << i; return 0; } #包括 使用名称空间std; int main(){ int i=0; 您可能将赋值运算符“=”与相等运算符“=”混淆了

C++11 为什么i等于-1?; 我的C++代码如下: #include <iostream> using namespace std; int main() { int i = 0; cout << (i=0) << endl; if(i=0) { i=1; } cout << i; return 0; } #包括 使用名称空间std; int main(){ int i=0; 您可能将赋值运算符“=”与相等运算符“=”混淆了,c++11,visual-c++,c++14,C++11,Visual C++,C++14,因此,您的if语句if(i=0)没有检查i是否等于0,而是将0赋值给i。由于赋值成功,因此if成功,因此我随后被赋值给语句中的值 编辑: 根据请求:“cout为什么?如果您将代码放在更多行上,并使用调试器,您可以回答自己的问题 显然,if(0)的主体从不运行。如果将条件设置为if(条件)语句: 若条件返回的值为!=0,则执行语句 若条件返回的值为==0,则不执行语句 赋值运算符返回对值的引用 因此: 如果将赋值运算符设置为If,则会检查赋值结果,i=0返回0,这样语句就不会执行。它等于零,因为您

因此,您的
if
语句
if(i=0)
没有检查i是否等于0,而是将0赋值给i。由于赋值成功,因此
if
成功,因此我随后被赋值给语句中的值

编辑:


根据请求:“cout为什么?如果您将代码放在更多行上,并使用调试器,您可以回答自己的问题


显然,if(0)的主体从不运行。

如果将条件设置为
if(条件)
语句:

若条件返回的值为!=0,则执行语句

若条件返回的值为==0,则不执行语句

赋值运算符返回对值的引用

因此:
如果将赋值运算符设置为If,则会检查赋值结果,i=0返回0,这样语句就不会执行。

它等于零,因为您需要这样做。问题是赋值与比较是否相等。公平地说,这是一个新手错误。我们在学习时都犯过这样的错误…@Someprogrammerdu在这个网站上没有必要粗鲁。你会考虑修改第一个句子吗?“有的程序员,是的,我知道。但是我的问题是为什么?”cout@DBPriGuy我不觉得某个程序员的评论粗鲁,-他甚至提供了一个到好书列表的链接。这个错误显然是新手的错误,大多数书都涉及这个问题。是的,我知道。但是为什么“coutIt不清楚这是否是你的问题,但我会添加一个附录。你可能想编辑你的问题,以明确你具体想要什么。是的,我知道。但为什么”Coutth不是一个答案。即使是,它也相当傲慢。不确定人们为什么这样做