关闭

关于scanf的返回值叙述。

127人阅读 评论(0) 收藏 举报
分类:

刚开始学习C语言的时候,并不知道多组数据为什么要写成形如以下几种形式;


int a,b,c;
while(~scanf("%d%d%d",&a,&b,&c))
或者:

int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
又或者:

int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)==3)
但是随着知识面的拓展,本博主也知道为什么了,嘻嘻,以下为解释部分,部分摘自刘汝佳的《算法竞赛》

首先要提到一点,scanf这个函数本身是具有返回值的,并且是int型 

int i=scanf("%d%d%d",&a,&b,&c);
是可以进行运行的。
根据史料记载(百度):

1.scanf()函数有返回值且为int型。

2.scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。

但是有一点,当要求输入三个整型时,如果我输入 (1 ,f ,1)这三个时,返回值时1而不是2,(可以上机实验一下)

原因是:遇到输入错误,scanf函数会立即终止,返回已经成功读取的数据的个数。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:33889次
    • 积分:2971
    • 等级:
    • 排名:第12015名
    • 原创:275篇
    • 转载:18篇
    • 译文:0篇
    • 评论:7条
    博客专栏
    文章分类