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

标签 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 编译器中此代码的异常行为(如果有)?

最佳答案

这是编译器中的一个错误。 C99 标准对 for 循环的描述如下:

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. [...]

鉴于 expression-2 的计算结果为 false,代码不应打印任何输出。

关于C:Turbo C 编译器中 for 循环的异常行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934587/

相关文章:

c - 如何检查if语句中的两个条件?

c - Linux 内核 : System call hooking example

c++ - 如何将此 C 代码转换为 C++?

java - ArrayList 中的索引越界异常

android - 在为无名 JSONObject 解析 JSONArray 时如何停止 for 循环?

python - 带循环的条件列

c - 雇用 Amiga HiSoft C 上的交错屏幕,带有窗口、菜单和按钮

c++ - C++中的strchr如何保证其调用者不会修改作为参数传递的字符串

javascript - for 循环 jquery javascript

javascript - 为什么我的函数不遵循 if/else 条件?