while(~scanf("%d%d", &a, &b))printf("%d\n",a+b);

zero zero swag 2021-02-02 10:24:57
#include<stdio.h>
int main()
{
int a,b;
while(~scanf("%d%d", &a, &b))printf("%d\n",a+b);
return 0;
}
中的 while(~scanf("%d%d", &a, &b))printf("%d\n",a+b);是什么意思,基础不好,希望可以详细一点,谢谢
...全文
657 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
Chivas_/Regal 2021-02-04
  • 打赏
  • 举报
回复
while(~scanf())是作为读取文件时判断文件是否在某刻终止输入的一种输入模式,在自调试时Windows的ctrl+z就是输入停止符。跟输入单个字符串时空格停止和输入一行字符串时计算机模拟出来一个'\0'结束一样
qzjhjxj 2021-02-02
  • 打赏
  • 举报
回复
~是按位取反 scanf的返回值是输入值的个数 如果没有输入值就是返回-1 -1按位取反结果是0 while(~scanf("%d%d", &a,&b))就是当没有输入的时候退出循环
  • 打赏
  • 举报
回复
他这个写法并不好,应该: while(scanf("%d%d", &a, &b) == 2) printf("%d\n",a+b);
自信男孩 2021-02-02
  • 打赏
  • 举报
回复
#include<stdio.h>
int main()
{
int a,b;
while(scanf("%d%d", &a, &b) == 2)printf("%d\n",a+b);
return 0;
}


scanf是返回正确输入的项目个数,比如两个%d,那么如果都输入正确返回2,正确一个,比如输入1 a,则返回1。如果两个都错误,则返回0。或者EOF,输入了EOF(LINUX ctrl + d, windows : ctrl + z)
因此用~是不合适的。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧