void main(){int i;for(i=1; i<5; i++){static int a=2;a++;}cout<<a<<endl;}如上程序,在复合句中声明了一个静态变量a,但在编译过程中没有通过,理由是a声明不正确,请大神纠错。
在for语句中定义的变量的作用域只能在for内,在for循环体之外是不能使用的。
把cout<<a<<endl;也放在for之内,或者把static int a=2;放在for之外都可以编译成功。
这是变量作用域的问题。