1

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

编码 :

unsigned long long a = 1llu<<63;

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

输出 :

decimal = 9223372036854775808
hexadecimal = 8000000000000000

现在,这是什么:

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

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

4

1 回答 1

8

因为五不是任何二的幂的因数,所以没有二的幂以零结尾。您给出的其他来源9223372036854780000不正确。

于 2012-12-13T04:14:05.700 回答