为什么以下代码是无限循环?(for循环)

Ans*_*_42 -2 c

这段代码是在一本名为C programming-A Modern Approach的书中练习的.

for(i=10;i>=1;i/=2)
{
    printf("%d", i++);
}
Run Code Online (Sandbox Code Playgroud)

编辑:

第一个输出应该是10,并且它应该在循环的下一步中增加1.但是当我运行此代码时,我得到的是1,它永远不会停止打印1.

请帮我理解这段代码.

kon*_*nqi 7

这段代码说

for( start with 10 ; as long as it is greater or equals 1 ; divide i by 2){
    Print i;
    add 1 to i
}
Run Code Online (Sandbox Code Playgroud)

所以:

start with 10:
print 10;
10 + 1 = 11
11 / 2 = 5,5 = 5 because it's int
print 5
5 + 1 = 6
6 / 2 = 3
print 3
3 + 1 = 4
4 / 2 = 2
print 2
2 + 1 = 3
3 / 2 = 1
print 1
1 + 1 = 2
2 / 2 = 1
print 1
1 + 1 = 2
2 / 2 = 1
.... and it will continue forever and ever
Run Code Online (Sandbox Code Playgroud)

for循环的执行顺序:

for([init];[1];[3]){
    [2]
}
Run Code Online (Sandbox Code Playgroud)

当然重复顺序[1],[2],[3]直到[1]不再为真

  • 我添加了for循环的执行顺序.谢谢@Kiril Kirov (2认同)
  • 下来的选票可能是用于表达不好的标题(我编辑过).它没有描述你遇到的实际问题.也许它也因为微不足道而得到了投票.如果这个样本来自一本书,那么这本书肯定会描述for循环是如何工作的.如果没有:获取另一本书!;-)我......我不介意回答琐事...... (2认同)