关于scanf的返回值叙述。

刚开始学习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函数会立即终止,返回已经成功读取的数据的个数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值