PHPホームページからマニュアルを読みました
それは書いています:
// this doesn't go for
//hexadecimal specified integers above 2^32-1:
var_dump( 0x100000000 );
// output: int(2147483647)
しかし、それはint(4バイト)よりも大きい4.5バイトを持っているので、私はそれをテストします。
フロートを出力します。
なぜ矛盾するのか分かりませんか?
PHPホームページからマニュアルを読みました
それは書いています:
// this doesn't go for
//hexadecimal specified integers above 2^32-1:
var_dump( 0x100000000 );
// output: int(2147483647)
しかし、それはint(4バイト)よりも大きい4.5バイトを持っているので、私はそれをテストします。
フロートを出力します。
なぜ矛盾するのか分かりませんか?
整数に関するPHPのマニュアルページから:「PHPが整数型の境界を超える数値を検出した場合、代わりに浮動小数点として解釈されます。また、整数型の境界を超える数値を生成する操作は、代わりにフロートします。」
integer
タイプが小さすぎてその数値を表すことができないため、PHPは自動的にタイプをに変換し、データfloat
が失われないようにします。これは予想される動作です。
しかし、あなたが引用した特定の例は、マニュアルでは明らかに間違っています。マニュアルの作成中に誰かがエラーを起こしたようです。または、マニュアルページが作成されてから、特大の16進リテラルの動作が変更された可能性があります。
それは私のためにフロートを出力します:float(4294967296)