验证布尔表达式 EOF 的取值是 0 还是 1———— 求解
c语言吧
全部回复
仅看楼主
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
level 12
c = getchar()
2013年10月14日 06点10分 2
???
2013年10月14日 06点10分
你以为没赋值 我就把赋值摘出来 在while()里面 有赋值操作
2013年10月14日 06点10分
回复 我是不是师兄 : while((c = getchar()) != EOF) 输入的字符赋值到 C ,然后判断 不等于 EOF ,这是循环条件。 可是结果 C = -1。 这不是 将 EOF 赋值到了 C 吗?
2013年10月14日 07点10分
回复 w15tp :getchar 返回EOF 赋值给c ///整个赋值表达式的求值结果是 EOF 和 !=EOF 做比较 结果是0 退出循环
2013年10月14日 08点10分
level 7
终于看见了熟悉的 布尔 这两个字,其余的表示不懂,
2013年10月14日 06点10分 3
~.~。。
2013年10月14日 07点10分
level 13
你想这样?
while((c = getchar()) != EOF)
printf("%d\n",c);
printf("%d",EOF);
————本人正在使用经典版贴吧,楼中楼一律不看不回
2013年10月14日 07点10分 4
??? 不对??
2013年10月14日 07点10分
level 5
#include<stdio.h>int main(void){int c;
while((c = getchar()) != EOF)printf("%d",EOF);printf("%d\n",c);return 0;}#endif#include <stdio.h>int main(void){int n;int array[25];while (scanf("%d",&n),n!=EOF) {for (int i=0; i<n; i++)scanf("%d",array+i);for (i=0; i<n; i++)printf ("%d ",array[i]);}return 0;}
通过百度百科得,EOF=-1,没有1和0的说法……以上为程序,请改为C++代码
2013年10月14日 09点10分 5
1