无符号长龙 - 奇怪的输出

Dr.*_*eon 1 c c++ macos gcc g++

好的,我正在尝试打印相对较大的十进制/十六进制版本,unsigned long long我得到的结果很奇怪......

代码 :

unsigned long long a = 1llu<<63;

printf("decimal = %llu\n",a);
printf("hexadecimal = %llx\n",a);
Run Code Online (Sandbox Code Playgroud)

输出 :

decimal = 9223372036854775808
hexadecimal = 8000000000000000
Run Code Online (Sandbox Code Playgroud)

现在,这是什么:

  • 十六进制输出正确的.
  • 十进制输出不是(应该是9223372036854780000)

为什么会这样?我究竟做错了什么???

Pot*_*ter 8

由于五不是两个幂的因子,因此两个幂不以零结束.您提供的其他来源9223372036854780000不正确.

  • 恭喜,您在Mac计算器中发现了一个错误. (4认同)