c中for循环的情况

nis*_*ntv 3 c for-loop

我遇到了以下问题:

以下for循环运行多少次 -

for(;0;)
 printf("hello");
Run Code Online (Sandbox Code Playgroud)

我执行了它,它运行了一次.我无法理解如何?

P.P*_*.P. 5

这甚至不会执行一次.我猜你有一个糟糕的编译器?

好.我想你正在使用Turbo C ;-)

编辑:

从C99标准:

6.8.5.3 for语句1声明

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

语句的行为如下:表达式expression-2是在每次执行循环体之前计算的控制表达式.在每次执行循环体之后,表达式-3被评估为void表达式.如果clause-1是一个声明,它声明的任何变量的范围是声明的剩余部分和整个循环,包括其他两个表达式; 它是在控制表达式的第一次评估之前按执行顺序到达的.如果子句-1是表达式,则在第一次评估控制表达式之前将其计算为void表达式.

它清楚地表明在执行循环之前首先评估条件.任何符合标准的编译器都不应该执行循环for(;0;) {}一次.

  • @Neil打印"hello"一次对于上面的代码肯定是错误的,这是turbo C的作用.不要因为你没有意识到这一点而贬低我. (2认同)
  • 此代码不应该打印一次..如果它在Turbo C中,那么Turbo C是错误的.. (2认同)

Ber*_*ann 5

你在这里复制的代码不是真正的.c文件中的代码,或者你有一个错误的编译器.

也许你还有一个分号?:for(;0;); printf("!"); 会打印一次.