有关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)),所以需要后续输入