void main(void){
for(int i;;);
for(int i;;);
}
这是有效的C代码吗?我的范围是什么?
答案 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
循环的第一个语句中声明变量。