我期待它的结果是同样的事情回来,但由于某种原因,它只是没有和显示笑脸。运行普通的getchar和putchar可以正常工作,并给出预期的输出。即使输入单个字符也只会返回一个笑脸。我是新的c和clion,所以我会感激的帮助。
编辑:我找到了问题的原因。while循环上的括号没有正确使用。但还是不明白为什么要画笑脸?
#include <stdio.h>
int main() {
int c;
while ((c = getchar() != EOF))
putchar(c);
}
2条答案
按热度按时间pjngdqdw1#
你有
而不是
这意味着您将不等式的结果赋给
c
(而不是getchar()
的结果),并且不等式返回0
(在x处)或1
(否则)。所以你正在打印字符1。根据主机的代码页,它可能是U+263 A白色SMILING FACE,“微笑”。
6vl6ewon2#
原因很简单。
在你的代码中,你总是打印字符代码
1
(除非c == EOF
时,它将0
),因为你分配c
与结果,如果比较getchar()) != EOF
,它只能是0
或1
。代码可以写成while(c=(getchar()!=EOF))
在代码页中,它是一个笑脸
☺
首先需要赋值
c
,然后比较:顺便说一句,这是一个非常好的候选人的警告,但不幸的是,海湾合作委员会和Clang不发出它