1.在不同平台上占字節數與最大值
在32位平台上int占4個字節,在64位平台上int占8個字節,PHP_INT_SIZE
在32位平台上int的最大值2^31 - 1,在64位平台上int最大值2^63 - 1,PHP_INT_MAX。php中int不支持無符號
2.為什么在不同的平台上int類型所占字節數有差異呢
不管什么類型,編譯型語言都會把源碼編譯成機器碼,由於不同平台寄存器位寬不一樣, 所以有了自己對int的規定, 導致int 這個數據類型比較特殊,具體分配的字節數與機器字長和編譯器有關。但一般等於機器寄存器位寬(64位平台除外,默認為4字節),如在32位平台上(所謂32位平台是指通用寄存器的數據寬度是32)編寫代碼,int 類型分配4個字節,而在16位平台是則分配2個字節。編譯器是把代碼轉換為機器碼的軟件,如果他願意,可以把int轉換為256位的,只不過會增加機器的復雜度,降低可移植性。
3.平台
個人把這三者合起來考慮(CPU+OS+Compiler)是因為:1、64位機器也可以裝32位系統(x64裝XP);2、32位機器上可以有16/32位的編譯器(XP上有tc是16位的,其他常見的是32位的);3、即使是32位的編譯器也可以弄出64位的integer來(int64)。以上這些是基於常見的wintel平台,加上我們可能很少機會接觸的其它平台(其它的CPU和OS),所以個人認為所謂平台的概念是三者的組合。雖然三者的長度可以不一樣,但顯然相互配合(即長度相等,32位的CPU+32位的OS+32位的Compiler)發揮的能量最大。另外一個話題,如果只是從抽象的層面來看,每個程序有的只是虛擬的計算環境,可以不必考慮實際的環境,只需要了解虛擬環境的情況就可以了,這在不考慮移植性或者非底層編程的時候是很有幫助的,這樣可以使你關注你的邏輯而不是實現
