我的C++代码如下:为什么为i等于-1
#include <iostream>
using namespace std;
int main() {
int i = 0;
cout << (i=0) << endl;
if(i=0) {
i=1;
}
cout << i;
return 0;
}
为什么(i=0)
等于0?
我的C++代码如下:为什么为i等于-1
#include <iostream>
using namespace std;
int main() {
int i = 0;
cout << (i=0) << endl;
if(i=0) {
i=1;
}
cout << i;
return 0;
}
为什么(i=0)
等于0?
您已将赋值运算符'='与等号运算符'=='混淆。
因此,您if
声明if(i=0)
不检查我是否等于0,这是分配 0到我。而且由于该分配成功,因此if
成功,因此我随后被分配到了该陈述中的值。
编辑:
根据要求:为什么 “COUT < <(I = 0);”熄灭“0”?
cout<<(i=0)<<endl;
打印零,因为再一次,i=0
是一个赋值语句,而不是比较语句。它不会比较我0和打印结果,它是分配我0然后打印我。由于我是0,字符'0'被打印。
是的,我知道了。但为什么“cout <<(i = 0);”熄灭“0”? – DachuanZhao
不清楚这是你的问题,但我会添加一个附录。你可能想编辑你的问题,以明确你正在寻找什么。 – DBPriGuy
对不起。这是我的错。但谢谢你的回答! – DachuanZhao
如果您将代码放在更多行并使用调试器,则可以回答自己的问题。
应该很明显,if(0)的主体永远不会运行。
是的,我知道了。但为什么“cout <<(i = 0);”输出“0”? – DachuanZhao
这不是一个答案。即使它是,它相当居高临下。不知道为什么人们这样做。 -1 – erip
如果你把你条件if(condition)
声明:
如果条件返回值= 0,则语句执行
如果条件返回值== 0 then语句不执行!
赋值运算符返回参考重视
所以: 如果你把赋值运算符,如果,那么分配的结果将被选中且i = 0 0的回报,因此语句将不会被执行。
它等于零,因为你需要[读一本书](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。问题是分配与平等的比较。 –
公平,这是一个新手的错误。在我们学习的时候,我们都犯了这样的错误... – vz0
@Someprogrammerdude在这个网站上没有必要粗鲁。你会考虑重新编写第一句话吗? – DBPriGuy