【发布时间】:2013-09-04 02:27:16
【问题描述】:
这是我自己的实验,以了解幕后内容,这个程序对编译器意味着什么?
main()
{
int c;
printf("%d\n",c);
printf("%d ", getchar());
while ((c == getchar()) != EOF){
putchar(c);
}
}
当我说 c 必须等于 getchar() (c == getchar()) 时,它不会继续执行 while 循环吗?现在我真的很困惑我自己的代码,c 必须是什么意思!
另外,在这段代码中:
main()
{
int c;
c = getchar()
while ((c = getchar()) != EOF)
putchar(c);
}
如果我们把int c修改成int c = getchar(),为什么不能这么写:
while (c != EOF)(
putchar(c);
c = getchar();
}
编译器应该从前面的语句中知道c = getchar(),为什么还要重新编写语句?对不起,如果我感到困惑。
【问题讨论】:
-
或许可以试试
while ((c = getchar()) != EOF)?而您的第一个printf()是未定义的行为。您正在评估一个当时不确定的变量 (c)。 -
while((c = getchar()) != EOF)
-
@DGomez 我想知道 c==getchar() 是什么意思!我明白了 c = getchar()
-
@WhozCraig 想知道 c==getchar() 是什么意思!我明白了 c = getchar()