我只是希望測試一個整數溢出,比如在C中(好吧,如果它總是超過整數max)。當我查看PHP是否確實在按照我的要求進行操作時,由於某種原因它似乎失敗了。這裏是我的問題的測試:PHP:在32位系統上INT_MAX顯示錯誤?
define('INT_MAX', 0x7FFFFFFF);
print "In decimal: " . hexdec(INT_MAX) . "<br/>";
print "In decimal: " . hexdec(0x7FFFFFFE) . "<br/>"; //Under int_max
print "In hex: " . dechex(hexdec(INT_MAX)) . "<br/>";
print "Float: " . ((bool)is_float(INT_MAX)?'true':'false') . "<br/>";
結果之中:
在十進制:142929835591
在十進制:142929835590
在十六進制:47483647
浮子:假
正如我在手冊中看到的那樣,如果推翻了它,它會拋出浮動,但似乎不是,顯然是更高。我在這裏是瘋了還是錯過了一些東西,還是有一些奇怪的問題,我真的需要知道在PHP中使用十六進制時的情況?
我不知道該十六進制表示只存儲它在小數到底。我只是錯誤地從十六進制恢復它,謝謝! – John 2010-09-15 22:54:57