while() 循环 :只要括号不为0,就执行循环。
~ :将一个数字按位取反0变为1 ,1变为0。
while(scanf("%d",&a) ):输入一个值判断
scanf("%d", &a,);
如果a被成功读入,那么scanf的返回值就是1;如果a未被成功读入,返回值为0;如果遇到错误或遇到end of file,返回值为EOF,且返回值为int型。
输入数字会返回1,会执行;输入字母或者违规字符会直接返回end of file 退出程序。
while(~scanf("%d",&a))
将scanf("%d", &a,):返回值按位取反:
这个程序当我输入1,scanf返回1,取反为-2,进入循环,
当我输入4,scanf返回1,取反为-2,进入循环,
当我输入b,scanf读取失败,返回0,取反为-1,进入循环,
循环继续,当我输入ctrl+z,再按下enter,告诉程序已经到了EOF(通常EOF=-1),取反为0,循环结束。
while(~scanf("%d",&a)&&~a)
输入5scanf返回1满足条件进行--操作;
输入-1 由于~a 所以~-1返回0.
&&是两边数字满足while()循环括号不为0才执行括号里面内容。
现在-1取反为0;退出循环;
while(~scanf("%d",&a)&&~a)作用:输入一个不为-1的数都可以进入while循环,退出要按Ctrl+C。