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