【发布时间】:2020-12-19 12:06:37
【问题描述】:
for循环的语法:
for(initialization;condition;increment/decrement){
statements;
}
为什么下面的代码运行无限次,然后为什么没有语法错误?
int x=10;
for(x++;x++;x++){
printf("\n %d",x);
}
【问题讨论】:
-
为什么会出现语法错误?
-
@klutt 我猜是因为用作条件的表达式对于用作条件没有意义。
-
@RobertSsupportsMonicaCellio 嗯,这很有意义:
for(int i=10; i--; ) -
@klutt 是的,但不幸的是这不是例子。
-
所有答案都是正确的,将代码跟踪到未定义的行为并将其保留。然而,我会很感激(仔细措辞,因为 UB 仍然是其中的相关部分),讨论在大多数实现中(至少根据我的经验),循环会很长,但不是无限的。从偶数开始,朝着正溢出,然后在负端返回(UB !!!),最后评估为 0 将是我的猜测。考虑到每个循环中第二次出现
x++,它仍然会结束......
标签: c loops for-loop operators post-increment