无符号长龙 - 奇怪的输出

时间:2012-12-13 04:11:23

标签: c++ c macos gcc g++

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

代码:

unsigned long long a = 1llu<<63;

printf("decimal = %llu\n",a);
printf("hexadecimal = %llx\n",a);

输出:

decimal = 9223372036854775808
hexadecimal = 8000000000000000

现在,这是:

  • 十六进制输出 正确。
  • 小数输出(应为9223372036854780000

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

1 个答案:

答案 0 :(得分:8)

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