LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

Undefined variable? Серьезно?

Я понимаю что это С-специфичный упоризм родом из 80хх, и он глубоко утвердился в языке и головах его изучающих.

переменная определяется в блоке {…}, вне блока она не просто не видна, но даже ее физическое место(на стеке) может быть распеределено компилятором под другую переменную.

это правильно и удобно. сделано для локальности кода, исходя из принципа - область видимости переменной должна быть минимальной, и она должна быть определена максимально близко к точке использования.

то есть

int x = 100;
if (...) {int x = 200; ...}
else {int x = 300; ... }

тут три разные переменные, причем две последних имеют один адрес (ну если компилятор не совсем тупой).

короче при таком способе определения переменных блок становился целостным куском кода, где все переменные определены внутри него. Это также защищает от ошибок кодирования, поскольку такие переменные снаружи блока не видно, и вы не можете их ошибочно использовать в последующем коде.

Исправление alysnix, :

Undefined variable? Серьезно?

Я понимаю что это С-специфичный упоризм родом из 80хх, и он глубоко утвердился в языке и головах его изучающих.

переменная определяется в блоке {…}, вне блока она не просто не видна, но даже ее физическое место(на стеке) может быть распеределено компилятором под другую переменную.

это правильно и удобно. сделано для локальности кода, исходя из принципа - область видимости переменной должна быть минимальной, и одна должна быть определена максимально близко к точке использования.

то есть

int x = 100;
if (...) {int x = 200; ...}
else {int x = 300; ... }

тут три разные переменные, причем две последних имеют один адрес (ну если компилятор не совсем тупой).

короче при таком способе определения переменных блок становился целостным куском кода, где все переменные определены внутри него. Это также защищает от ошибок кодирования, поскольку такие переменные снаружи блока не видно, и вы не можете их ошибочно использовать в последующем коде.

Исходная версия alysnix, :

Undefined variable? Серьезно?

Я понимаю что это С-специфичный упоризм родом из 80хх, и он глубоко утвердился в языке и головах его изучающих.

переменная определяется в блоке {…}, вне блока она не просто не видна компилятору, но даже ее физическое место(на стеке) может быть распеределено компилятором под другую переменную.

это правильно и удобно. сделано для локальности кода, исходя из принципа - область видимости переменной должна быть минимальной, и одна должна быть определена максимально близко к точке использования.

то есть

int x = 100;
if (...) {int x = 200; ...}
else {int x = 300; ... }

тут три разные переменные, причем две последних имеют один адрес (ну если компилятор не совсем тупой).