while(~scanf(“%d“,&a)&&~a)用法

while() 循环 :只要括号不为0,就执行循环。

~ :将一个数字按位取反0变为1 ,1变为0。 

while(scanf("%d",&a) ):输入一个值判断

while(~scanf(“%d“,&a)&&~a)用法_第1张图片

scanf("%d", &a,);
如果a被成功读入,那么scanf的返回值就是1;如果a未被成功读入,返回值为0;如果遇到错误或遇到end of file,返回值为EOF,且返回值为int型。

输入数字会返回1,会执行;输入字母或者违规字符会直接返回end of file 退出程序。

while(~scanf("%d",&a))while(~scanf(“%d“,&a)&&~a)用法_第2张图片

将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)

while(~scanf(“%d“,&a)&&~a)用法_第3张图片
 输入5scanf返回1满足条件进行--操作;

输入-1 由于~a    所以~-1返回0.

&&是两边数字满足while()循环括号不为0才执行括号里面内容。

现在-1取反为0;退出循环;

while(~scanf("%d",&a)&&~a)作用:输入一个不为-1的数都可以进入while循环,退出要按Ctrl+C。

 

 

你可能感兴趣的:(算法)