Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

С99 и объявление переменной

#c


Стандартом написано что переменные в блоке создаются при входе в него. Но как в С99,
если в нем переменные можно объявлять не в начале блока? Все равно создаются при входе
в блок?
    


Ответы

Ответ 1



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

Комментариев нет:

Отправить комментарий