我的C ++代码如下:
#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?
答案 0 :(得分:8)
你混淆了赋值运算符&#39; =&#39;使用等于运算符&#39; ==&#39;。
因此,您的if
语句if(i=0)
不检查我是否等于0,将 0分配给i 。由于该分配成功,if
成功,因此我随后被分配到声明中的值。
编辑:
根据要求:为什么&#34; cout&lt;&lt;(i = 0);&#34;推出&#34; 0&#34;?
cout<<(i=0)<<endl;
打印为零,因为i=0
再一次是赋值语句,而不是比较语句。它不是将i与0比较然后打印结果,它是将 i分配给0然后打印i。因为我是0,所以字符&#39; 0&#39;得到印刷。
答案 1 :(得分:0)
如果你把条件告诉if(condition)
陈述:
如果条件返回的值是!= 0,则执行语句
如果condition返回的值是== 0则不执行语句。
赋值运算符返回对值的引用
所以: 如果将赋值运算符设置为if,则将检查赋值的结果,并且i = 0返回0,因此不会执行语句。
答案 2 :(得分:-2)
如果您将代码放在更多行上并使用调试器,则可以回答自己的问题。
很明显,if(0)的主体永远不会运行。