title: Unsigned long with negative value
body: <p>Please see the simple code below:</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;stdlib.h&gt;
  
  using namespace std;
  
  
  int main(void)
  {
      unsigned long currentTrafficTypeValueDec;
      long input;
      input=63;
      currentTrafficTypeValueDec = (unsigned long) 1LL &lt;&lt; input; 
      cout &lt;&lt; currentTrafficTypeValueDec &lt;&lt; endl;
      printf("%u \n", currentTrafficTypeValueDec);
      printf("%ld \n", currentTrafficTypeValueDec);
      return 0;
  }
  </code></pre>
  
  <p>Why printf() displays the currentTrafficTypeValueDec (unsigned long) with negative value?</p>
  
  <p>The output is:</p>
  
  <pre><code>9223372036854775808
  0
  -9223372036854775808 
  </code></pre>