问题描述
- c循环语句简单的问题。。。
-
int a=10;
do{a--;}while(a--);为什么是无限循环?小括里到0不停么
解决方案
a--是先用再减,所以一次循环while里面先判断a的值是否是0,再减一。
解决方案二:
C/C++ 循环语句的优化
第6章 C控制语句:循环
简单的循环语句
解决方案三:
虽然a--到0时那一次不进入循环,但紧接着a就到-1了,即为真,又开始循环
解决方案四:
int a=10;
do{a--;}while(a--);
为什么是无限循环?小括里到0不停么
首先注意 a的类型是int,前面无unsigned ,大多编译器默认认为是一个有符号数,有符号数最高位为符号位,0值减1会为-1。
再次 while(a--);语句,先判断while( a ),再执行a--。
第1次 while判断时 a=9
第2次 while判断时 a=7
第3次 while判断时 a=5
第4次 while判断时 a=3
第5次 while判断时 a=1
第6次 while判断时 a=-1
...........
从以上归纳可知每次判断时a均为奇数,不可能为0,所以会无限循环下去。
解决方案五:
依次a的值为9,7,5,3,1,-1不会为0
时间: 2024-08-03 09:58:07