为了账号安全,请及时绑定邮箱和手机立即绑定

请问while(。。!=EOF) 这个语句是什么意思呢?是不是可以终止这个循环的?

请问while(。。!=EOF) 这个语句是什么意思呢?是不是可以终止这个循环的?

杨魅力 2022-05-24 15:11:48
#include<stdio.h>#include<math.h>void main(){double X1,X2,Y1,Y2;double d;while(scanf("%lf%lf%lf%lf",&X1,&Y1,&X2,&Y2)!=EOF){d=sqrt((double)((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)));printf("%.2lf\n",d);}}
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

EOF 其实是一个宏,在预编译期间会被编译器用 -1 代替
也就是说,当scanf 的返回值是 -1 时就会跳出循环。
scanf 的返回值是前 N 个成功度取得数据的数量,简单点说就是成功读了多少个数据,不过有区别,如果你第一个输入数据非法的话,就算你后面是合法输入,也会返回 0 。
EOF 是 end of file 的意思,也就是文件尾。如果是读文件的话,读到文件尾就会结束循环。
如果使用键盘输入的话, 输入 Ctrl + z 就可以结束循环(貌似是模拟文件结束符还是什么的,我也不太清楚),不过我所说的是在windows 环境下,如果是其他操作系统就另当别论了。

查看完整回答
反对 回复 2022-05-30
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

没错,如果输入出错,或结束,while就会停止 EOF=0

查看完整回答
反对 回复 2022-05-30
  • 2 回答
  • 0 关注
  • 381 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号