title: C Unions output unclear
body: <p>I got some troubles understanding unions and how they work.</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  union date {
      int year;
      char month;
      char day;
  };
  
  int main() {
      union date birth;
      birth.year = 1984;
      birth.month = 7;
      birth.day = 28;
      printf("%d, %d, %d\n", birth.year, birth.month, birth.day);
      return 0;
  }
  </code></pre>
  
  <p>so since it's an union it will give me 4 bytes, because int is the highest type given in this union. that's all I got from reading and I dont know why the output is</p>
  
  <pre><code>1820, 28, 28
  </code></pre>