回答編集履歴
1
すこし追加
answer
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
for (int i = 0; i < 10; i++) {
|
12
12
|
small += billion;
|
13
13
|
bignum += billion;
|
14
|
-
printf(" %3d: %12ld = %
|
14
|
+
printf(" %3d: %12ld = %p, %12d = 0x%x, %12d\n",
|
15
15
|
i, bignum, (char*)bignum, (int)bignum, bignum, small);
|
16
16
|
}
|
17
17
|
printf("%d = sizeof(int) \n", sizeof(int));
|
@@ -44,4 +44,5 @@
|
|
44
44
|
100億を表示しているのは long int 型変数を %ld 変換指定で表示した場合です。100億は少なくとも34bit必要であることがわかります。
|
45
45
|
そして、100億のところで ``` 1410065408 ``` が表示されています。この表示は、34bitの数値の、下位32bitを表示したものです。
|
46
46
|
|
47
|
-
取り急ぎ、このコードと表示結果を参考にしてみてください。
|
47
|
+
取り急ぎ、このコードと表示結果を参考にしてみてください。
|
48
|
+
まずは、long int, long long int など、大きな整数型の sizeof を確認することからやり直したらいかが?その次は printf() の変換指定を調べることかな。
|