【发布时间】:2013-07-19 12:09:10
【问题描述】:
我刚刚开始自学编程 (C) 作为一种爱好。我正在使用 K&R。
main()
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
}
验证 getchar() != EOF 是否为 0 或 1
我想我明白发生了什么:
- c 被分配到键盘的下一个字符
- 检查c是否为EOF
- c 被分配 1 或 0,这取决于它是否为 EOF。
- 字符显示在输出中,或者如果 EOF 结束程序。
但是,我的解决方案是错误的,所以很明显我不明白:
main ()
{
int c;
while ((c = getchar()) != EOF)
printf("%d\n", c);
}
这只是打印字符的值。如果我按回车键,还会打印“10”。
我以为它会打印 c。但是,它打印的是字符的值而不是 1 或 0 值。
我知道 c 在与 EOF 比较后被分配了 1 或 0。但我不确定我可以用什么逻辑来展示这一点。看来我需要以某种方式“摆脱”显示字符值,而是显示比较值。这是否意味着我需要退出 while 循环?如果是这样,我不知道如何(这只是一个猜测)。
如何简单地验证 c = 1 或 0?
还有,我怎么知道这个?我想我应该从中学到一些基本的东西。
main ()
{
int c;
while ((c = getchar()) != EOF != 0 != 1)
putchar(c);
}
我也这样做了,我认为这似乎可行。因为它不输出任何字符,但我不确定这是否是他们正在寻找的解决方案......
【问题讨论】:
-
x != y返回一个布尔值。您可以通过阅读 C 标准来验证它是否始终为1或0(并假设您的编译器实际上遵循它,我想。)(尽管您在问另一个关于c的不相关问题,这是值由getchar返回,而不是与 EOF 比较的值)。