3 回答

TA貢獻1858條經(jīng)驗 獲得超8個贊
PHP沒在語言層面都沒有直接提供int32、int64這類明確內(nèi)存使用的類型。
為什么?因為大部分人都不關(guān)心一個數(shù)字要占多少內(nèi)存,也懶得區(qū)分不同類型的數(shù)字,他們只想有一個統(tǒng)一的數(shù)字類型,能完成常用的數(shù)值計算就可以了。只有一個類型可以大大減少使用者的心智負擔,也簡化了實現(xiàn)。(PHP還是區(qū)分整形和浮點數(shù),不像JS只有浮點數(shù))
通常要明確使用int32或int64的場景就是網(wǎng)絡(luò)數(shù)據(jù)傳輸,這種情況都不是數(shù)值運算了,PHP里要么轉(zhuǎn)成字符串當二進制處理,要么用擴展。JS也類似,WebGL里就有確定大小的數(shù)組,因為圖形API需要這類特殊的數(shù)據(jù)格式保證高效率。
補充:明確一下這里說的32位和64位是什么?
當我們說32位、64位時可能在說兩種東西:
程序的可用地址空間
語言中的整數(shù)類型的位數(shù)
PHP有32位和64位版本之分,兩者最大差別是進程的地址空間的大小。32位程序的進程地址空間是4G,而Windows下的32位程序有2G的地址空間是內(nèi)核的,程序?qū)嶋H只有2G的可用內(nèi)存。
而我上面的答案說的是整數(shù)類型的位數(shù),例如C語言有short、int、long、long long之分,而PHP只有一種整形,這個整形具體大小是根據(jù)程序是32位還是64位定的,但是一個具體的PHP程序里只有確定的一種。
可用在32位程序里實現(xiàn)64位的整形嗎?當然可以,兩個32位整數(shù)合在一起當作64位用也不是不行,GMP甚至實現(xiàn)了任意精度的整形。
添加回答
舉報