title: Bitwise operators in c++ and overloading
body: <p>I have written some code to print the value of an integer raised to an integer power.
  Why does this code pause for input even after I have entered 2 integers?</p>
  
  <pre><code>#include&lt;iostream&gt;
  
  int main(){
      int a, b;
      std::cin&gt;&gt;a&gt;&gt;b;
      std::cout&lt;&lt;std::endl&lt;&lt;a&lt;&lt;std::endl&lt;&lt;b&lt;&lt;std::endl;
      int c, d;
      c = a;
      d = 0;
      while(b){
          if(b&amp;1)
              d += c;
          if(b&gt;&gt;1){
              b = b&gt;&gt;1;
              c *= c;
          }
      }
  
      std::cout&lt;&lt;d;
      return 0;
  }
  </code></pre>
  
  <p>I suspected that the compiler misinterprets the bitwise operator as an overloaded operator, but even if I change the condition in the while loop to </p>
  
  <pre><code>if(b/2 &gt; 0){
      b = b/2;
      c *= c;
  }
  </code></pre>
  
  <p>it still doesn't work. I have no idea what is going on here. I've tried this code in the terminal, and some online IDEs, but the result is the same. </p>