在“for”条件下声明的变量范围是什么?

时间:2013-04-18 12:13:44

标签: c c11

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

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

1 个答案:

答案 0 :(得分:0)

C99 6.8.5.3 for语句

  

声明

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

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

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