c语言 while(~scanf(“%c”,&c))的含义是什么

这个程序把while后面换成没有~这个符号的时候也一样可以循环执行,可是while(~scanf(“%c”,&c))不是应该输入正确的就要停止吗

就是当输入一个整型,且这个整型的数不是0时,条件成立,否则,若输入0,则跳过while里面的内容。

其实scanf("%d",&n),n这是一个逗号表达式,所谓逗号表达式,它的值是逗号后面的那个数,举例如下:
y=(5,6);//那么y=6,注意的是因为逗号表达式的优先级比赋值运算还低,所以如果你写成y=5,6的话y还是等于5的
也就是说while(scanf("%d",&n),n)其实相当于while(n),只是因为要输入所以写成了while(scanf("%d",&n),n)这样而已
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-20
scanf函数的返回值是正确获得输入变量的个数。
~scanf(),就是没有得到正确输入
总体上就是,如果有正确输入,就退出循环,如果没有正确输入,就执行循环

~就是把-1变成0追问

那为什么这个程序我输入一个字母还可以继续运行 不跳出啊

追答

因为你输入1个是正确的状态啊,还会继续循环,
你试着输入一个字符串,这样应该会退出循环了

追问

~scanf():如果有正确输入,就退出循环,如果没有正确输入,就执行循环
那为什么我输入字符他返回的不应该是0吗 为什么你说是正确的状态啊

追答

你输入一个字符,这返回是0对吧, 但是你前面家里一个 ~ 符号,这样还是非0的啊,
非0即为真,还是在while循环里面.

追问

输入一个字符,scanf(“%c”,&c))不是正确的输入吗,返回的不是1吗,为什么是0啊

追答

scanf函数 成功 正确返回值是0
你可以查下MSDN

追问

我晕,你说的不是 scanf函数的返回值是正确获得输入变量的个数。 吗。。。还有我查了一下书,说的和你说的这句话差不多。。正确获得输入变量的个数在这里不是1吗。。。。

追答

大哥,正确的返回是 0
不是1

追问

不带~的情况下 不是1吗。。。。。。。

本回答被网友采纳
相似回答