level 10
w15tp
楼主
原来问过这个问题,知道了 EOF 已经被宏定义为 -1。
可是书上让你验证 0 还是 1。
后来下载了习题答案,还是不明白。 下面是答案的解释:
代码例子
#include<stdio.h>
int main(void)
{
int c;
while((c = getchar()) != EOF)
printf("%d",EOF);
printf("%d\n",c);
return 0;
}
本程序从系统的标准输入读取字符并使用了上面的表达式。当有自负可读时, getchar() 不会返回文件结束符( 即 EOF),所以
getchar() != EOF
的取值为真,变量 c 将被赋值为 1。当程序遇到文件结束符时,表达式取值为假,此时变量 c 将被赋值为 0,程序将结束运行。
问题是, 在上面的例子中,
在运行结果中 C 怎么被变成 -1 了。 好像根本没有 赋值语句啊??
还有。 习题解释的实在是太纠结了。。。求解
2013年10月14日 06点10分
1
可是书上让你验证 0 还是 1。
后来下载了习题答案,还是不明白。 下面是答案的解释:
代码例子
#include<stdio.h>
int main(void)
{
int c;
while((c = getchar()) != EOF)
printf("%d",EOF);
printf("%d\n",c);
return 0;
}
本程序从系统的标准输入读取字符并使用了上面的表达式。当有自负可读时, getchar() 不会返回文件结束符( 即 EOF),所以
getchar() != EOF
的取值为真,变量 c 将被赋值为 1。当程序遇到文件结束符时,表达式取值为假,此时变量 c 将被赋值为 0,程序将结束运行。
问题是, 在上面的例子中,
在运行结果中 C 怎么被变成 -1 了。 好像根本没有 赋值语句啊??
还有。 习题解释的实在是太纠结了。。。求解