一块小钱 发表于 2020-4-11 17:38:55

关于while循环的问题

运行的结果是是4,但是不太理解其中的原理。
while语句后有;不应该是空语句,不执行循环吗?
#include<stdio.h>
int main()
{
        int num=0;
        while (num++<=2) ;
        printf("%d ",num);
      return 0;
}

zltzlt 发表于 2020-4-11 17:39:44

空语句不代表不执行循环,只是不执行任何语句

永恒的蓝色梦想 发表于 2020-4-11 17:42:05

空循环只是啥也不做,不是不循环。

当然你这里num++是做了事的。

qiuyouzhi 发表于 2020-4-11 17:42:33

和这段代码一样:
while (num++<=2)
        ;
就会一直循环,直到条件不成立

一块小钱 发表于 2020-4-11 17:47:01

qiuyouzhi 发表于 2020-4-11 17:42
和这段代码一样:

就会一直循环,直到条件不成立

明白了 可是第一次循环num=1,第二次=2,第三次=3,结果不应该是3吗

一块小钱 发表于 2020-4-11 17:47:46

永恒的蓝色梦想 发表于 2020-4-11 17:42
空循环只是啥也不做,不是不循环。

当然你这里num++是做了事的。

感谢 可是结果为什么是4 不是3吗

永恒的蓝色梦想 发表于 2020-4-11 17:48:56

一块小钱 发表于 2020-4-11 17:47
感谢 可是结果为什么是4 不是3吗

因为在最后一次判断失败的时候,也执行了自加运算

qiuyouzhi 发表于 2020-4-11 17:49:03

一块小钱 发表于 2020-4-11 17:47
明白了 可是第一次循环num=1,第二次=2,第三次=3,结果不应该是3吗

即使判断错误了,num也自增了1
可以改成++num

zltzlt 发表于 2020-4-11 17:49:26

一块小钱 发表于 2020-4-11 17:47
感谢 可是结果为什么是4 不是3吗

程序的执行过程:

num = 0
num <= 2,继续循环
num ++,此时 num 是 1

num <= 2,继续循环
num ++,此时 num 是 2

num <= 2,继续循环
num ++,此时 num 是 3

num 不 <= 2,终止循环
(但是 num 还是会自加,所以结果为 4)
页: [1]
查看完整版本: 关于while循环的问题