OK、私は比較的大きな10進数/ 16進数バージョンを印刷しようとしていますが、unsigned long long
得られる結果はかなり奇妙です...
コード :
unsigned long long a = 1llu<<63;
printf("decimal = %llu\n",a);
printf("hexadecimal = %llx\n",a);
出力 :
decimal = 9223372036854775808
hexadecimal = 8000000000000000
さて、これが何です:
- 16進出力は正しいです。
- 10進数の出力はそうではありません(である必要があります
9223372036854780000
)
なぜそれが起こっているのですか?私は何が間違っているのですか?