好的,我正在尝试打印一个相对较大的十进制/十六进制版本,unsigned long long
我得到的结果很奇怪......
编码 :
unsigned long long a = 1llu<<63;
printf("decimal = %llu\n",a);
printf("hexadecimal = %llx\n",a);
输出 :
decimal = 9223372036854775808
hexadecimal = 8000000000000000
现在,这是什么:
- 十六进制输出是正确的。
- 十进制输出不是(应该是
9223372036854780000
)
为什么会这样?我究竟做错了什么???