1

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

なぜそれが起こっているのですか?私は何が間違っているのですか?

4

1 に答える 1

8

5は2の累乗の因数ではないため、2の累乗はゼロで終わりません。与えたあなたの他の情報源9223372036854780000は正しくありません。

于 2012-12-13T04:14:05.700 に答える