title: Comparing an int64_t value with another uint32_t value
body: <pre><code>int main(){
   int64_t a = -1;
   uint32_t b = -1;
  
   bool c = a &gt; b;
   std:: cout &lt;&lt; c &lt;&lt; std::endl;
   
   return 0;
  }
  </code></pre>
  <p>My understanding is <code>b</code> which is a smaller type will be converted to the bigger type of <code>a</code> (unit32 to int64):</p>
  <p><a href="https://stackoverflow.com/questions/34568748/comparing-int-with-long-and-others">Comparing int with long and others</a></p>
  <p>Then <code>a</code> which is a signed value will be turned to an unsigned value:</p>
  <p><a href="https://stackoverflow.com/questions/5416414/signed-unsigned-comparisons">Signed/unsigned comparisons</a></p>
  <p>Essentially our comparison will be turned into:</p>
  <pre><code>18446744073709551615 &gt; 4294967295
  </code></pre>
  <p>But my <code>c</code> result is <code>false</code>. What am I missing here?</p>