title: Unexpected result of logical AND operation between two uint64_t numbers
body: <p>In the following code, I check if the result of the logical AND operation equals zero:</p>
  <pre><code>#include &lt;iostream&gt;
  #include &lt;cstdint&gt;
  
  int main() {
  
    uint64_t num1 = 0b0000000000000000000000000000000000000000000000000000000000000000;
    uint64_t num2 = 0b0000000000000000000000000000000000000000000000000000000000000000;
    uint64_t result = num1 &amp; num2;
  
    if(result == 0) {
      std::cout &lt;&lt; &quot;It got here!\n&quot;;
    }
  
    return 0;
  }
  </code></pre>
  <p>The output is: It got here!</p>
  <p>However, if I don't use the &quot;result&quot; variable:</p>
  <pre><code>#include &lt;iostream&gt;
  #include &lt;cstdint&gt;
  
  int main() {
  
    uint64_t num1 = 0b0000000000000000000000000000000000000000000000000000000000000000;
    uint64_t num2 = 0b0000000000000000000000000000000000000000000000000000000000000000;
  
    if(num1 &amp; num2 == 0) {
      std::cout &lt;&lt; &quot;It got here!\n&quot;;
    }
  
    return 0;
  }
  </code></pre>
  <p>It doesn't print anything. Why does this happen?</p>