0
void main(void){
    for(int i;;);
    for(int i;;);
}

这是有效的 C 代码吗?i的范围是什么?

4

1 回答 1

0

C99 6.8.5.3 for 语句

该声明

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

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

另请注意,此功能仅从 C99 开始有效。换句话说,您不能for在 C89 的循环中的第一条语句中声明变量。

于 2013-07-26T19:27:38.083 回答