为什么我等于-1?

时间:2016-10-20 15:55:35

标签: c++11 visual-c++ c++14

我的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?

3 个答案:

答案 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)的主体永远不会运行。