Оператор переключения: значение по умолчанию должно быть последним случаем?

Рассмотрите следующее switch оператор:

switch( value )
{
  case 1:
    return 1;
  default:
    value++;
    // fall-through
  case 2:
    return value * 2;
}

Этот код компилирует, но действительно ли это допустимо (= определенное поведение) для C90/C99? Я никогда не видел код, где случай по умолчанию не является последним случаем.

Править:
Как Jon Cage и запись KillianDS: это - действительно ужасный и запутывающий код, и я хорошо знаю о нем. Я просто интересуюсь общим синтаксисом (он определяется?) и ожидаемый вывод.

168
задан Gaffi 20 August 2012 в 21:28
поделиться