我不知道为什么这两个代码的行为不同。
我写了一些代码,接收用户输入然后打印出来。
我认为第一个(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;
}
答案 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) { ... }