为什么我等于-1?

Dac*_*hao -1 visual-c++ c++11 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;
}
Run Code Online (Sandbox Code Playgroud)

为什么(i=0)等于0?

DBP*_*Guy 8

您已将赋值运算符'='与等于运算符'=='混淆.

因此,您的if语句if(i=0)不会检查 i是否等于0,而是 i 赋值为 0.并且由于该分配成功,if因此我随后被赋予了声明中的值.

编辑:

根据要求:为什么"cout <<(i = 0);" 推出"0"?

cout<<(i=0)<<endl;打印为零,因为再一次i=0是赋值语句,而不是比较语句.它不是将i比较为0然后打印结果,它将i 分配给0然后打印i.由于i为0,因此打印字符"0".