Стандартом написано что переменные в блоке создаются при входе в него. Но как в С99, если в нем переменные можно объявлять не в начале блока? Все равно создаются при входе в блок?
Ответ
Понимаете, вопрос о том, когда именно они создаются - совершенно праздный.
Допустим, создаются в начале блока.
Или, допустим, не создаются в начале блока.
Или при одном ключе создаются, при другом - нет.
Вы-то все равно, пока не достигнете объявления переменной, никак не можете к ней обратиться. Очень многое зависит от оптимизатора - решит ли он размещать переменную в стеке или в регистре, разместит ли он ее в отдельной области памяти или в области, которая была занята другой переменной, но которая больше не используется.
Так что дать точный ответ на вопрос, как мене кажется, можно один - depends on :) Не уверен (если ошибаюсь - пусть гуру поправят), но такие вещи стандарт должен отдавать на откуп компилятору.
Комментариев нет:
Отправить комментарий