用`while(~scanf(“%d%d“,&a,&b))`处理输入数据

 `while(~scanf("%d%d",&a,&b))` 是在处理输入数据的一种特殊写法。

 解释

1. `scanf("%d%d", &a, &b)`:
   - 这个函数用于从标准输入中读取两个整数,并将它们分别存储到变量 `a` 和 `b` 中。

2. `~` 操作符:
   - `~` 是按位取反运算符。在这里,它用于将 `scanf` 的返回值取反。
   - `scanf` 返回成功读取的项数。对于 `scanf("%d%d", &a, &b)` 这种格式,如果成功读取两个整数,它会返回 `2`。如果遇到输入结束或错误,它会返回 `EOF`(通常是 `-1`)。

3. `~` 的效果:
   - `~2` 的结果是 `-3`(按位取反),这是一个非零值,条件判断会认为这个值是 `true`。
   - `~(-1)` 的结果是 `0`,这意味着 `scanf` 遇到输入结束或错误时,`while` 循环会终止。

总结

这一句的意思是“只要 `scanf` 成功读取了两个整数,循环就继续执行。”如果 `scanf` 不能再读取到两个整数(例如到达输入结束或遇到错误),`while` 循环就会退出。这是一种处理多组输入的常见方式,尤其是当不事先知道输入的数量时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值