title: uint32_t alignment on 64-bit?
body: <p>I'm curious about the alignment of uint32_t types on 64-bit platforms.  The spec says that uint32_t should be exactly the given bitwidth, which indeed it seems to be:</p>
  
  <pre><code>&gt; printf("sizeof(uint32_t): %zd\n", sizeof(uint32_t));   
  sizeof(uint32_t): 4
  </code></pre>
  
  <p>But then I have a struct:</p>
  
  <pre><code>typedef struct A {
      uint32_t a;
      uint32_t b;
  } A;
  </code></pre>
  
  <p>But, surprisingly:</p>
  
  <pre><code>&gt; printf("sizeof(A): %zd\n", sizeof(A));
  sizeof(A): 16
  </code></pre>
  
  <p>Is uint32_t being 8-byte aligned for some reason?  Is it really a 8-byte type underneath?  </p>