title: Any difference in compiler behavior for each of these snippets?
body: <p>Please consider following code:</p>
  
  <p>1.</p>
  
  <pre><code>uint16 a = 0x0001;
  
  if(a &lt; 0x0002)
  {
      // do something
  }
  </code></pre>
  
  <p>2.</p>
  
  <pre><code>uint16 a = 0x0001;
  
  if(a &lt; uint16(0x0002))
  {
      // do something
  }
  </code></pre>
  
  <p>3.</p>
  
  <pre><code>uint16 a = 0x0001;
  
  if(a &lt; static_cast&lt;uint16&gt;(0x0002))
  {
      // do something
  }
  </code></pre>
  
  <p>4.</p>
  
  <pre><code>uint16 a = 0x0001;
  uint16 b = 0x0002;
  
  if(a &lt; b)
  {
      // do something
  }
  </code></pre>
  
  <p>What compiler does in backgorund and what is the best (and correct) way to do above testing?</p>
  
  <p>p.s. sorry, but I couldn't find the better title :)</p>
  
  <p>EDIT:</p>
  
  <p>values 0x0001 and 0x0002 are only example. There coudl be any 2 byte value instead.</p>
  
  <p>Thank you in advance!</p>