Здравствуйте, K13, Вы писали:
K13>Поскольку тут модифицируется локальная переменная, то объявленная до switch s останется неизменной.
K13>А вот если case 'x': утащить вниз switch, то и не скомпилится -- нужны фигурные скобки.
Да.
А теперь вопрос:
не является ли такое выделение последнего case дефектом стандарта?
Русский военный корабль идёт ко дну!
Re[3]: дефект С++ ?
От:
Аноним
Дата:
13.01.09 11:21
Оценка:
Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, K13, Вы писали:
K13>>Поскольку тут модифицируется локальная переменная, то объявленная до switch s останется неизменной.
K13>>А вот если case 'x': утащить вниз switch, то и не скомпилится -- нужны фигурные скобки.
AG>Да. AG>А теперь вопрос: AG>не является ли такое выделение последнего case дефектом стандарта?
Здравствуйте, Alexander G, Вы писали:
AG>не является ли такое выделение последнего case дефектом стандарта?
Я не знаю, что ты там считаешь за выделение, но убогость С'ишного switch'а общеизвестна...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Alexander G, Вы писали:
AG>ну что в последнем case можно объявлять не-POD переменные, в остальных нельзя.
В этом смысле switch является близнецом-братом goto. case -- это просто метки, а switch -- это просто goto на одну из них...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Alexander G, Вы писали:
AG>не является ли такое выделение последнего case дефектом стандарта?
Это является дефектом языка, а с точки зрения стандарта всё довольно прозрачно.
Контекст здесь ограничен фигурными скобками (телом switch'а).
case суть метки, и даже если условное goto сделано сколь угодно умно (на хеш-таблице, на двоичном поиске, ещё бог знает как), всё равно логика исполнения тела switch остаётся последовательной.
Правила видимости переменных в теле блока с метками хорошо известны. switch им не противоречит.
Здравствуйте, coba, Вы писали:
E>>Я не знаю, что ты там считаешь за выделение, но убогость С'ишного switch'а общеизвестна... C>это как раз с++ свитч
Да хрен редьки не слаще...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали: AG>>ну что в последнем case можно объявлять не-POD переменные, в остальных нельзя. E>В этом смысле switch является близнецом-братом goto. case -- это просто метки, а switch -- это просто goto на одну из них...
так это и имеется в виду, что в с++ с его областями видимости подобная организация switch является атавизмом...