输出解释
for(i=5;++i;i-=3)
这个for循环如何给出输出642有人可以告诉我这是如何工作的,如果没有条件,循环如何终止?
答案 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
完全相同的东西。