c循环语句简单的问题。。。

int a=10;
do{a--;}while(a--);

为什么是无限循环?小括里到0不停么

c

4个回答

a--是先用再减,所以一次循环while里面先判断a的值是否是0,再减一。

jchjvjb
jchjvjb
4 年多之前 回复

虽然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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐