title: Switch statement: must default be the last case?
body: <p>Consider the following <code>switch</code> statement:</p>
  
  <pre><code>switch( value )
  {
    case 1:
      return 1;
    default:
      value++;
      // fall-through
    case 2:
      return value * 2;
  }
  </code></pre>
  
  <p>This code compiles, but is it valid (= defined behavior) for C90/C99? I have never seen code where the <em>default</em> case is not the last case.</p>
  
  <p><strong>EDIT:</strong><br>
  As <em>Jon Cage</em> and <em>KillianDS</em> write: this is really ugly and confusing code and I am well aware of it. I am just interested in the general syntax (is it defined?) and the expected output.</p>