title: How come the output of following code : DoSecond
body: <pre><code>#include &lt;stdio.h&gt;
      int main()
      {
          switch (printf("Do"))
          {
          case 1:
              printf("First\n");
              break;
          case 2:
              printf("Second\n");
              break;
          default:
              printf("Default\n");
              break;
          }
      }
  </code></pre>
  
  <p>Can someone explain how above code works? How does <code>switch</code> jump to <code>case2</code> label?</p>