Cтранное поведение swith

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Простите, мне показалось, что разговор начал Вас раздражать. Если так, давайте прекратим. Просто не отвечайте на этот пост и я больше не буду писать. Абсолютно не хочу с Вами ссориться, поверьте. Так что, если разговор стал неприятен - прекращаем.

Пока же отвечу.

Green пишет:
Разница в том что мы не можем инициализировать локальную переменную.

В каком из блоков не можем? В switch - да, не можем. А в обычном блоке? См. #34 - тоже оказывается не можем, если там метки и goto не по уму расставлены! Так я Вас просил показать разницу, а Вы мне сходство показываете.

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

А вот разница по-прежнему непонятна :-(

Так что зря Вы не хотите видеть меток и goto. Разница между обычным блоком и switch только в том, что в switch goto уже есть, а в обычном блоке их ещё вставить ручками надо - но это именно синтаксический сахар.

Green
Offline
Зарегистрирован: 01.10.2015

ОК, прекращаем. Меня тут очень сильно отвлекают, поэтому отвечать приходится наскоками.)
Да, согласен, в аналогичном примере с goto всё верно.
Так же как и то, что многие компиляторы при этом фиксируют ошибку.
Считаю что все мои пояснения были верными, в т.ч и самое первое, хоть что бы Вы мне не говорили о деревьях.)
Удалил свою нетрезвую ахинею.