C语言while(scanf("%d",&num)==1);语句的一个问题
2个回答
展开全部
这个要从scanf函数的返回值说起。
比如scanf("%d",
&n);有如下情况:
1.
当输入为一个整数时,读取到n,scanf返回值是1(表示成功读取了一个数),ok,继续执行
2.
当输入为eof(通常切的题目有多组数据,会使用eof表示输入结束),这时,没有读取输入到n,scanf返回值是-1,所以您的代码==1就不成立,所以会跳出循环。而如果是while(scanf("%d",
&n))的话,即等价于while(-1),显然还会继续循环,所以超时。
所以可以有以下用法:
1.
while(scanf("%d",
&n)
==
1)
2.
while(scanf("%d",
&n)
!=
eof)
3.
while(~scanf("%d",
&n))
当输入为eof时,-1求反为0哦,所以也可以。
比如scanf("%d",
&n);有如下情况:
1.
当输入为一个整数时,读取到n,scanf返回值是1(表示成功读取了一个数),ok,继续执行
2.
当输入为eof(通常切的题目有多组数据,会使用eof表示输入结束),这时,没有读取输入到n,scanf返回值是-1,所以您的代码==1就不成立,所以会跳出循环。而如果是while(scanf("%d",
&n))的话,即等价于while(-1),显然还会继续循环,所以超时。
所以可以有以下用法:
1.
while(scanf("%d",
&n)
==
1)
2.
while(scanf("%d",
&n)
!=
eof)
3.
while(~scanf("%d",
&n))
当输入为eof时,-1求反为0哦,所以也可以。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询