最佳答案
我听说(可能是从老师那里)应该在程序/函数之上声明所有的变量,并且在语句中声明新的变量可能会导致问题。
但是当我读到 K & R 的时候,我碰到了这样一句话: “变量的声明(包括初始化)可以跟在引入任何复合语句的左括号后面,而不仅仅是引入函数的那个”。他举了一个例子:
if (n > 0){
int i;
for (i=0;i<n;i++)
...
}
我对这个概念进行了一些研究,它甚至可以用于数组。例如:
int main(){
int x = 0 ;
while (x<10){
if (x>5){
int y[x];
y[0] = 10;
printf("%d %d\n",y[0],y[4]);
}
x++;
}
}
那么到底什么时候不允许我声明变量呢?例如,如果我的变量声明不在大括号之后怎么办?比如这里:
int main(){
int x = 10;
x++;
printf("%d\n",x);
int z = 6;
printf("%d\n",z);
}
根据程序/机器的不同,这会引起麻烦吗?