gpt4 book ai didi

c++ - (m = cin.get())!=EOF&m = cin.get()!=EOF 之间的区别

转载 作者:行者123 更新时间:2023-11-30 05:04:11 25 4
gpt4 key购买 nike

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

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

我认为第一个,(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;
}

最佳答案

您的直觉是正确的,问题评论中的 Ed Heal 也是正确的:这是 operator precedence. 重要性的一个例子

(m = cin.get())!=EOF 情况下,基本上是这样的:

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

m = cin.get()!=EOF 情况下:

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

关于c++ - (m = cin.get())!=EOF&m = cin.get()!=EOF 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49041217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com