回答編集履歴
1
誤字の修正
answer
CHANGED
@@ -6,9 +6,9 @@
|
|
6
6
|
|
7
7
|
なんだ、PHPは算数も出来ないのか!とお思いでしょうが、違います。正確には、**PHPはある数より大きい整数については算数が出来ない**、です。このとある数は`PHP_INT_MAX`という定数で取得でき、OSやアーキテクチャによって固定で、通常は`2147483647`(32bit環境)か`9223372036854775807`(64bit環境)のどちらかです。
|
8
8
|
|
9
|
-
気付きましたか?`3486784400`は`2147483647`より大きい整数です。そのため、`PHP_INT_MAX`が`2147483647`である環境では`3486784400`を整数として扱えません。そのため、整数の簡単な算数です
|
9
|
+
気付きましたか?`3486784400`は`2147483647`より大きい整数です。そのため、`PHP_INT_MAX`が`2147483647`である環境では`3486784400`を整数として扱えません。そのため、整数の簡単な算数ですら、PHPは正確に出来ないのです。
|
10
10
|
|
11
|
-
では、実際どのような処理の結果`-3`
|
11
|
+
では、実際どのような処理の結果`-3`というとんちんかんな答えを出してしまったのかを見ていきましょう。下記処理は`PHP_INT_MAX`が`2147483647`の場合です。`9223372036854775807`では正しく`1`と答えてくれるので、該当しないことに注意してください。
|
12
12
|
|
13
13
|
まず、`3486784400`というリテラル表記ですが、**整数(int)ではありません**。`PHP_INT_MAX`を越えているため、PHPではこの表記の数を整数として扱えないからです。実際には何になるのかというと、`var_dump()`で確認できます。
|
14
14
|
|