這個(gè)問題的答案取決于我們?cè)敢獾玫蕉噙h(yuǎn)的實(shí)際考慮。
從理論上講,C和C+中的一切都取決于編譯器,而僅僅取決于編譯器。硬件/操作系統(tǒng)一點(diǎn)也不重要。編譯器可以自由地實(shí)現(xiàn)任何厚度和絕對(duì)模仿任何東西。沒有什么可以阻止C或C+實(shí)現(xiàn)int
任何大小的類型和任何表示形式,只要它足夠大以滿足語言標(biāo)準(zhǔn)中規(guī)定的最低要求。這種抽象級(jí)別的實(shí)用示例是現(xiàn)成的,例如基于“虛擬機(jī)”平臺(tái)的編程語言,如Java。
然而,C和C+的意圖是高度高效率語言。為了達(dá)到最大的效率,C或C+實(shí)現(xiàn)必須考慮從底層硬件派生的某些考慮因素。因此,確保每個(gè)基本類型都基于硬件直接(或幾乎直接)支持的某種表示是很有意義的。從這個(gè)意義上說,基本類型的大小確實(shí)取決于硬件。
換句話說,64位硬件/OS平臺(tái)的特定C或C+實(shí)現(xiàn)是完全免費(fèi)的。int
作為一個(gè)71位1的補(bǔ)碼符號(hào)整數(shù)類型,占用128位內(nèi)存,使用其他57位作為填充位,這是總是需要存儲(chǔ)編譯器作者的女朋友的生日。這種實(shí)現(xiàn)甚至具有一定的實(shí)用價(jià)值:它可以用于執(zhí)行C/C+程序可移植性的運(yùn)行時(shí)測(cè)試。但這正是實(shí)現(xiàn)的實(shí)際效用所在。不要指望在“普通”C/C+編譯器中看到類似的東西。