首页 > 解决方案 > 为什么这个循环永远存在?

问题描述

int main() {
        for(3;2;1)
            printf("hello\n")
}

我认为这个循环甚至不会被执行。AFAIK 我们必须定义一个变量;提出条件;增加减少。然而,在这段代码中,我计算的东西都不存在。所以我认为这个程序应该崩溃。但它会永远持续下去。

标签: cfor-loop

解决方案


因为退出条件 (2) 始终为真。

for这是有效的,因为语句的格式是

for (clause-1;expression-2;expression-3)

Whereclause-1可以是声明(例如int i = 0)或表达式。

在您的情况下,您有三个表达式,因此该语句在语法上仍然有效。

expression-2计算结果为 false (0) 时,循环退出,在您的情况下,它永远不会这样做,因为它是一个非零常量 (2)。


推荐阅读