我遇到了以下问题:
以下 for 循环将运行多少次 -
for(;0;)
printf("hello");
我执行并运行了 1 次。我无法理解如何?
这甚至不会执行 1 次。我猜你的编译器不好?
行。我认为您正在使用 Turbo C ;-)
编辑:
来自 C99 标准:
6.8.5.3 for 语句 1 语句
for ( clause-1 ; expression-2 ; expression-3 )
语句的行为如下: 表达式 expression-2 是在每次执行循环体之前计算的控制表达式。每次执行循环体后,表达式 expression-3 被评估为 void 表达式。如果clause-1 是一个声明,它声明的任何变量的范围是声明的其余部分和整个循环,包括其他两个表达式;它在控制表达式的第一次评估之前按照执行顺序到达。如果 Clause-1 是一个表达式,它在控制表达式的第一次评估之前被评估为一个 void 表达式。134)
它清楚地表明在执行循环之前首先评估条件。任何符合标准的编译器都不应该执行循环for(;0;) {}
一次。
您在此处复制的代码不是真正的 .c 文件中的代码,或者您的编译器有问题。
也许你有一个额外的分号?:for(;0;); printf("!");
将打印一次。
for 循环定义为:
for(startExpression; testExpression; countExpression)
{
block of code;
}
解码:
for(;0;)
方法
编辑以显示正确的循环解码。
上面写的代码永远不会进入for循环。
检查 ideone链接上的代码。
我不是你在你的源代码中拥有的,你可能;
在for
没有注意到它的情况下输入了一个:
for(;0;);
printf("hello");
在这种情况下,您的程序将打印“hello”。
由于表达式为 0,因此它被认为是假的。因此,在这种情况下,循环运行 0 次。