我有这个简单的代码(试图做KandR练习): -的printf VS的putchar - 不同的输出
#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的
(在下面的屏幕截图的底部示出)1)在第一种情况下,为什么输出打印超过1 1?
2)为什么情况2的输出与情况1相同?
你是while while循环是错误的。尝试'while((c = getchar())!= EOF)' – WhozCraig
对于putchar打印'1',你必须发送Ascii值为1(49十进制)而不是整数1。价值与人品问题。 – Jiminion
您对第二个输出的描述有误导性。代码的两种变体通常会产生绝对相同的行格式,即在第二个例子中不会有任何特殊的“盒子”。唯一的区别是第一个例子使用'1'作为输出字符,而第二个例子使用'\ x1'作为输出字符。 – AnT