关于while循环的问题
运行的结果是是4,但是不太理解其中的原理。while语句后有;不应该是空语句,不执行循环吗?
#include<stdio.h>
int main()
{
int num=0;
while (num++<=2) ;
printf("%d ",num);
return 0;
} 空语句不代表不执行循环,只是不执行任何语句 空循环只是啥也不做,不是不循环。
当然你这里num++是做了事的。 和这段代码一样:
while (num++<=2)
;
就会一直循环,直到条件不成立 qiuyouzhi 发表于 2020-4-11 17:42
和这段代码一样:
就会一直循环,直到条件不成立
明白了 可是第一次循环num=1,第二次=2,第三次=3,结果不应该是3吗 永恒的蓝色梦想 发表于 2020-4-11 17:42
空循环只是啥也不做,不是不循环。
当然你这里num++是做了事的。
感谢 可是结果为什么是4 不是3吗 一块小钱 发表于 2020-4-11 17:47
感谢 可是结果为什么是4 不是3吗
因为在最后一次判断失败的时候,也执行了自加运算 一块小钱 发表于 2020-4-11 17:47
明白了 可是第一次循环num=1,第二次=2,第三次=3,结果不应该是3吗
即使判断错误了,num也自增了1
可以改成++num 一块小钱 发表于 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]