Apparently a (uint32_t) shifted by 32 is license to become completely insane.<p><pre><code>  int main(int argc, char **argv) {
    uint32_t x = (uint32_t)0x12345678&lt;&lt;(uint32_t)32;
    printf(&quot;x&lt;&lt;32 = %x\n&quot;, x );
  }

    (Almost all compilers make a warning about the shift size)
  gcc 4.9.2 on Debian x86:      0x0
  gcc 4.9.2 on Debian x86, -O3: 0x0
  clang 3.6 on Debian x86:      0x0
  clang 3.7 on Debian x86:      0x0
  gcc 4.9.2 on Raspbian ARM:    0x0
  tcc 0.9.27 on Raspbian ARM:   0x0                NO WARNING
  tcc 0.9.27 on Debian x86:     Segmentation fault NO WARNING
  clang on El Capitan:          0x5a788cb0
  clang on El Capitan, -O3:     0x54049be8</code></pre>