我有这样一段简单的代码(试图在KandR中做一个练习):
#include <stdio.h>
int main(){
int c = EOF;
while(c=(getchar() != EOF)){
printf("%d",c);
}
return 0;
}
当我运行这个程序并输入任何字符(单个字符),输出为11。如果我输入多个字符,例如'bbb',则输出为1111。我明白我已经显式地加入了括号,以优先考虑getchar() != EOF的条件检查,这应该导致1或0。但是我不明白为什么我会得到多个1。
另一个情况是:
#include <stdio.h>
int main(){
int c = EOF;
while(c=(getchar() != EOF)){
putchar(c);
}
return 0;
}
无论我输入哪个字符,最终输出都是一个带有1和0的方框(如下图所示)。
![enter image description here](https://istack.dev59.com/Dn3kj.webp)
2)为什么第二个示例的输出结果与第一个示例不同?
while ((c = getchar()) != EOF)
。 - WhozCraig1
作为输出字符,而第二个示例使用\x1
作为输出字符。 - AnT stands with Russia