解释For循环C程序中的输出

时间:2017-02-28 12:31:58

标签: c for-loop output

输出解释

for(i=5;++i;i-=3)

这个for循环如何给出输出642有人可以告诉我这是如何工作的,如果没有条件,循环如何终止?

3 个答案:

答案 0 :(得分:1)

表达式 ++i - 这是条件检查 - 等于零时,循环终止。请注意,条件检查的评估在循环体运行之前发生,并且存在将i增加1的副作用。

如果重写它,您可能会发现for循环更容易阅读

for(i = 5; ++i;){
    // Here, observing i yields 6, 4, and 2.
    i -= 3;
}

然后你可以看到i依次是5​​,6(条件检查副作用),3(减3),4,1,2,-1,0。

答案 1 :(得分:1)

这里的条件是隐含的。 C认为是真每个不为空的整数

在评估条件之前,应用了++ i语法 因此程序运行如下:

  • 开始: I = 5

  • 第一次循环

条件(mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); )=> ++i

  • 第二次循环

迭代操作(i=6)=> i-=3

条件(i=3)=> ++i

我被评估为i=4

  • 第三循环

迭代操作(true)=> i-=3

条件(i=1)=> ++i

我被评估为i=2

  • "第四个循环"

迭代操作(true)=> i-=3

条件(i=-1)=> ++i

我被评估为i=0

答案 2 :(得分:0)

将for-loop中的三个部分概念性地理解为:

i = 5;         /* first_expression */
while( ++i )   /* while( second_expression )*/
{
    /* for-loop body runs here */

    i -= 3;    /* third_expression */
}

++i不再评估为" true"时,循环终止。 (非零)。你可以写出与++i != 0完全相同的东西。