【发布时间】:2013-11-12 00:14:03
【问题描述】:
来自C 编程语言:
int c;
while ((c = getchar()) != EOF)
putchar(c);
"... 解决方案是getchar在没有更多输入时返回一个独特的值,这个值不能与任何真实字符混淆。这个值称为EOF,表示“文件结束。 " 我们必须将c 声明为一个足够大的类型,以容纳getchar 返回的任何值。我们不能使用char,因为c 必须足够大以容纳EOF 以及任何可能的@ 987654331@。”
我签入stdio.h 并在我的系统上打印了EOF 的值,它设置为-1。在我的系统上,chars 已签名,尽管我知道这取决于系统。所以,EOF 可以适合我的系统的char。我重写了上面的小例程,将c 定义为char,程序按预期工作。在 ASCII 字符表 here 中还有一个字符,它似乎有一个对应于 255 的空白字符,其行为类似于 EOF。
那么,为什么 ASCII 似乎有一个指定为 EOF 的字符 (255)?这似乎与 The C Programming Language 书中所说的相矛盾。
【问题讨论】:
-
因为255和-1不一样?