title: C error: "initializer element is not constant" with &, works with +
body: <p>With GCC I get the "initializer element is not constant" error for the second line of the following code:</p>
  
  <pre><code>uint8_t gBuffer[512 + 4]; /* Data buffer */
  uint8_t* gAlignedBuffer = (uint8_t*)(((uint32_t)gBuffer + 4) &amp; 0xFFFFFFFCU);   /* Align buffer to 4-byte boundary */ 
  </code></pre>
  
  <p>However if I change
  <strong>&amp;</strong> 0xFFFFFFFCU
  to 
  <strong>+</strong> 0xFFFFFFFCU
  the code compiles ok:</p>
  
  <pre><code>uint8_t gBuffer[512 + 4]; /* Data buffer */
  uint8_t* gAlignedBuffer = (uint8_t*)(((uint32_t)gBuffer + 4) + 0xFFFFFFFCU);   /* Align buffer to 4-byte boundary */ 
  </code></pre>
  
  <p>Why is this?</p>