这段代码是在一本名为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.
请帮我理解这段代码.
这段代码说
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]不再为真