title: The return value of function returning long long unsigned int is incorrect
body: <p>When I call function <code>wordToInt(c)</code> from main, the return value is different from what it's printing inside the function.</p>
  
  <pre><code>main()
  {
      long long  unsigned item;
      char c[6] = "ABCDE";
      item = wordToInt(c);
      printf("Main  The item is :%llu\n",item);
  }
  
  long long unsigned wordToInt(char *c)
  {
      long long unsigned int k,item=0;
      int i,len;
      int j,p=0;
      len = (int) strlen(c);
  
      for(i = len-1;i&gt;=0;i--)
      {
          if(c[i] == 'c')
              j = 42;
          else if(c[i] == '*')
              j = 99;
          else
              j = (int) c[i];
          j = j%100;
          k = pow(100,p);
          p++;
          item = item + (j*k);
      }
  
      printf("Function item is :%llu\n",item);
      return item;
  }
  </code></pre>
  
  <p>The output of the program is:</p>
  
  <pre><code>Function item is :6566676869
  Main  The item is :18446744071686293893
  </code></pre>
  
  <p>Can anyone tell me why there is inconsistency in the output?</p>