C中scanf()!=EOF的理解

遇到这个表达式:scanf("%d%d",&a,&b)!=EOF;

如果a和b都被成功读入,那么上面表达式的结果为2;

如果只有一个读入,那么上面表达式的结果为1;

如果a&&b都没有读入,那么上面表达式的结果为0(若a没有读入,则直接放弃b的读入);

如果遇到错误或者文件结尾,那么上面表达式的结果为EOF,对应的有符号数时-1;

什么时候输出EOF? 在stdio.h中 宏定义为-1
按照说明,scanf函数只有在第一个参数为NULL(空指针)的情况下,才可能返回EOF,否则,返回成功格式化并赋值的参数个数(>=0)。

直接回车相当于第一个参数为NULL;

while(~scanf("%d",&n))
如果输入中的内容不能识别为整数,或者输入内容不足,scanf返回0

while(scanf("%d",&n),n) 在while括号里是一个逗号表达式。逗号表达式,它将两式联接起来,如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14。


原文:https://blog.csdn.net/yeruby/article/details/7489213

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值