Я слышал (вероятно, от учителя), что нужно объявлять все переменные поверх программы/функции, а объявление новых из этих операторов может вызвать проблемы.
Но затем я читал 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);
}
Может ли это вызвать проблемы в зависимости от программы/машины?