Рассмотрим следующее switchутверждение:
switch( value )
{
case 1:
return 1;
default:
value++;
// fall-through
case 2:
return value * 2;
}
Этот код компилируется, но действительно ли он (= определенное поведение) для C90 / C99? Я никогда не видел код, в котором регистр по умолчанию не последний.
РЕДАКТИРОВАТЬ:
Как пишут Джон Кейдж и KillianDS : это действительно уродливый и запутанный код, и я хорошо это знаю. Меня просто интересует общий синтаксис (он определен?) И ожидаемый результат.
gotoне злой. Культовые последователи груза есть! Вы не могли себе представить, к чему могут пойти люди, избегая крайностей, gotoпотому что они, как утверждается, настолько злы, что создают непонятный беспорядок в их коде.
gotoосновном для имитации что - то вроде finallyпункта в функциях, где RESSOURCES (файлы, память) должны быть освобождены при остановке, и повторять для каждого случая ошибки списка freeи closeне помогают читаемости. Хотя есть одно использование goto, которого я хотел бы избежать, но не могу, это когда я хочу выйти из цикла, и я нахожусь switchв этом цикле.