title: C literal suffix U, UL problems
body: <p>Could someone explain to me what can happen if I'll forget suffix(postfix) for constants(literals) in ANSI C?</p>
  
  <p>For example I saw for bit shift operations such defines:</p>
  
  <pre><code>#define AAR_INTENSET_NOTRESOLVED_Pos (2UL) /*!&lt; Position of NOTRESOLVED field. */
  #define AAR_INTENSET_NOTRESOLVED_Msk (0x1UL &lt;&lt; AAR_INTENSET_NOTRESOLVED_Pos) /*!&lt; Bit mask of NOTRESOLVED field. */
  #define AAR_INTENSET_NOTRESOLVED_Disabled (0UL) /*!&lt; Interrupt disabled. */
  #define AAR_INTENSET_NOTRESOLVED_Enabled (1UL) /*!&lt; Interrupt enabled. */
  #define AAR_INTENSET_NOTRESOLVED_Set (1UL) /*!&lt; Enable interrupt on write. */
  </code></pre>
  
  <p>It's used in 32bit architecture. But it could be ported to 16bit or 8bit.
  What can happen if postfix UL is not used and I'll use these macros for bit shift operations as it is supposed? </p>
  
  <p>I just assume that e.g. in 8-bit architecture can (1&lt;&lt;30) leads to overflow.</p>
  
  <p><strong>EDIT</strong>: I have found nice link: <a href="http://dystopiancode.blogspot.cz/2012/08/constant-suffixes-and-prefixes-in-ansi-c.html" rel="nofollow">http://dystopiancode.blogspot.cz/2012/08/constant-suffixes-and-prefixes-in-ansi-c.html</a></p>
  
  <p>But is it safe to use suffixes if the code is supposed to be ported on various architectures? </p>
  
  <p>For instance if suffix U represents unisgned int so for 8bit architecture it's usually 16bit but for 32bit it's 32bit variable, so 0xFFFFAAAAU is ok for 32bit compiler but not for 8bit compiler, right?</p>