Рассмотрим следующее 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
в этом цикле.