疯知识

C语言FOR循环执行顺序

题目

以下代码段的输出是什么?

for ( int i=10; i> 1; i /=2 ) {
    printf("%d ", i++);
}

我的答案是:5 3 2 1 1 (x) 正确答案:10 5 3 2

剖析

for(初始值赋值操作A;终止条件B;递增操作C)
{
     循环体D
}

其执行次序为:A->B->D->C->B->D->C->B……..

直到B条件不满足,则跳出循环体,这里需要着重强调的是:首次初始化之后,也一定要先执行一遍条件B语句。

所以上方的题目是,i = 10,i>1; printf一次之后i++,然后满足前两个条件,再执行i/=2

Copyright © 2020 风也