首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有关while语句中判别表达式的有关问题

2012-04-10 
有关while语句中判别表达式的问题while(scanf(%d,&p)!EOF)while(scanf(%d,&p))下面的语句错误的原因

有关while语句中判别表达式的问题
while(scanf("%d",&p)!=EOF)
while(scanf("%d",&p))
下面的语句错误的原因是什么。。。用上面的语句就可以通过,下面的语句就会出错


[解决办法]
EOF是-1,while在表达式非0的时候进行循环,为0的时候停止循环,而-1显然不是0
[解决办法]
(1)scanf函数的返回值是 表示输入的 域的个数,当遇到结束符 时返回-1,EOF其实在宏里定义为-1,
(2)while(scanf("%d",&p)!=EOF) 这里,在你想结束输入操作时,一般在最后键入 ctrl+z,之后再调用
scanf函数时,就会返回 -1,此时循环条件结束
(3)如果是 while(scanf("%d",&p)),那么在遇到 ctrl+z之后,调用scanf函数时,返回 -1,此时循环
并没有结束,所以会 执行循环体内部的语句(scanf("%d %d %d %d %d",&t,&g1,&g2,&g3,&gj)),所以需要后续输入

热点排行