我知道这是一个愚蠢的问题,但我只是出于好奇而问这个问题。 我只是在某处读到了这段代码:
#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编译器中查看此代码的异常行为吗?
答案 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会给你正确的输出。