ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
6 июля
160826 Топик полностью
Vit (05.07.2009 00:24, просмотров: 163) ответил Evgeny_CD на Теперь осталось понять, как ПО СТАНДАРТУ компилер должен выбрать порядок вариантов i :)
Ещё раз - в блоке операторов будет применена локальная для блока переменная. Вне этого блока она не видна. Потому в цикле будет использована либо глобальная переменная, либо можно объявить свою локальную (C99) int i = 100; //1 unsigned char a[5][5]={0}; //2 int foo(int i){ //3 int z = i; //4 for(int i=0; i<5; i++){ //5 { int i = 2; //6 a[i][i] = i; //7 } z += i; //8 } return z; //9 } void main(void){ //10 int x; //11 x = foo(i); //12 } В этом примере i, объявленная в стр.(1) используется только в main стр.(12). Формальный параметр i функции foo стр.(3) используется только в присвоении (инициализации) переменной z стр.(4). Локальная переменная, объявленная в цикле стр.(5), используется только как счётчик цикла и в стр.(8). Локальная переменная, объявленная в блоке операторов внутри тела цикла стр.(6), никогда не меняется и формально 5 раз объявляется, используется в стр.(7), а после этого её уж нет;) Результатом будет a[2][2] равно 2, остальные элементы массива a останутся равными нулю, ну а х будет равно значению 110 стр.(12)