好的,我正在尝试打印相对较大的unsigned long long
的十进制/十六进制版本,而我得到的结果非常奇怪...
代码:
unsigned long long a = 1llu<<63;
printf("decimal = %llu\n",a);
printf("hexadecimal = %llx\n",a);
输出:
decimal = 9223372036854775808
hexadecimal = 8000000000000000
现在,这是:
9223372036854780000
)为什么会这样?我做错了什么???
答案 0 :(得分:8)
由于五个不是两个幂的因子,因此两个幂不以零结束。您提供9223372036854780000
的其他来源不正确。