巨兔12138 发表于 2020-3-2 14:52:14

while的循环条件问题

#include <stdio.h>

int main()
{
      int ch;

      while (scanf("%d", &ch) == 1 && ch >= 0)
                ;

      return 0;
}
在这行代码里的while循环条件是什么意思啊
还有原因也给解释一下吧
谢谢各位大神了

qiuyouzhi 发表于 2020-3-2 15:01:29

只要用户输入数据就继续
scanf的返回值是1和0,如果用户输入就是1,不输入就是0
ch >= 0就是输入的字符串的长度大于0
第二个条件其实就是用来保险的

wccd 发表于 2020-3-2 15:24:57

循环条件是输入一个整数且这个整数大于等于0,上面那个朋友的说法不对哦,我亲自试过,scanf可以赋值给变量,其值是所输入参数的个数值。

zltzlt 发表于 2020-3-2 15:44:33

当用户成功输入一个整数并且这个整数大于 0,则退出循环。

巨兔12138 发表于 2020-3-2 18:14:31

wccd 发表于 2020-3-2 15:24
循环条件是输入一个整数且这个整数大于等于0,上面那个朋友的说法不对哦,我亲自试过,scanf可以赋值给变量 ...

我给您说一下我的想法吧
我认为逻辑与前面的scanf...的意思是输入的这个整型数是1
逻辑与后面的意思是ch的值大于等于0
所以while循环,在输入的这个数大于等于0且等于1时,也就是等于1,循环条件为真,进入循环
所以我并不明白您说的“循环条件是输入一个整数且这个整数大于0”
您能给再详细解释一下吗,能把您的思考过程写出来吗{:5_109:}

te___amo 发表于 2020-3-2 18:22:12

先看while   while循环条件为真继续循环 为假退出循环    (scanf("%d", &ch) == 1 && ch >= 0)也就是说这括号里面的表达式为真继续循环 为假退出循环   再看 &&    &&两边的的表达式都为真时为真有一边假则返回假      scanf("%d", &ch) == 1 这个表达式是根据scanf函数获取输入字符成功就会返回一个数值 为什么会返回1 你可以去百度scanf函数返回值 所以只要输入正确数据ch成功接收 scanf("%d", &ch) == 1这个表达式就为真   再看 ch >= 0    只要输入非负数就会返回真   

巨兔12138 发表于 2020-3-2 19:03:02

te___amo 发表于 2020-3-2 18:22
先看while   while循环条件为真继续循环 为假退出循环    (scanf("%d", &ch) == 1 && ch >= 0)也就是说这括 ...

谢谢啦!讲的很明白!
页: [1]
查看完整版本: while的循环条件问题