(m = cin.get())之间的差异!= EOF& m = cin.get()!= EOF

时间:2018-03-01 01:19:31

标签: c++

我不知道为什么这两个代码的行为不同。

我写了一些代码,接收用户输入然后打印出来。

我认为第一个(m = cin.get())!=EOF就像保存在m的一个字符,然后=返回1(因为'保存'成功)和while循环永远不会结束(因为1 != EOF)。

第二个,m = cin.get()!=EOF,就像我想要的那样。由于输入的字符保存在m中,因此m != EOF就是我的意思。

1

#include <iostream>

using namespace std;

int main() {

    char m=0;
    while((m = cin.get())!=EOF){
        cout << m;
    }
    return 0;
}

2

#include <iostream>

using namespace std;

int main() {

    char m=0;
    while(m = cin.get()!=EOF){
        cout << m;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

你的直觉是正确的,问题评论中的Ed Heal也是正确的:这是operator precedence.

重要性的一个例子

(m = cin.get())!=EOF案例中,这基本上就是:

m = cin.get();
while (m != EOF) { ... }

m = cin.get()!=EOF案例中:

m = (cin.get() != EOF);
while (m) { ... }