title: Ambiguous result for 1<<31 in C++
body: <p>Why does <code>1&lt;&lt;31</code> print <code>18446744071562067968</code> as output when we run the following code?</p>
  
  <pre><code>#include&lt;iostream&gt;
  using namespace std;
  
  int main(){
      unsigned long long int i = 1&lt;&lt;31;
      cout&lt;&lt;i; // this prints 18446744071562067968
  }
  </code></pre>