C:Turbo C编译器中for循环的异常行为

时间:2013-09-21 15:52:36

标签: c for-loop conditional-statements turbo-c++ turbo-c

我知道这是一个愚蠢的问题,但我只是出于好奇而问这个问题。 我只是在某处读到了这段代码:

#include<stdio.h>
int main() {
    for ( ; 0 ; )
        printf("This code will be executed one time.");
    return 0;
}

输出:

This code will be executed one time.

这个循环在Turbo C编译器中执行一次,而不是在gcc中工作,但是这个循环如何能够执行甚至一次呢?

如果有任何问题,请指导我在Turbo C编译器中查看此代码的异常行为吗?

2 个答案:

答案 0 :(得分:1)

这是编译器中的一个错误。 C99标准描述了这样的循环:

The statement

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

behaves as follows: The expression expression-2 is the controlling expression 
that is evaluated before each execution of the loop body. 
The expression expression-3 is evaluated as a void expression after each 
execution of the loop body. [...]

鉴于表达式-2的计算结果为false,代码应该不打印输出。

答案 1 :(得分:1)

TurboC不遵循C99标准。这可以解释这种不寻常的行为。确保,gcc会给你正确的输出。