int 類型占據多少字節?到底是跟編譯器有關?還是系統來決定的?
1. CPU的設計者才不管你在上面跑什么程序.他們只是按着他們的想法來設計.
而int的大小,至少在C/C++中,標准只說可以由實現者自己定義.至於要不要按機器的字長來設計那就是編譯器設計者的喜好了.除非哪天標准改成int必須是機器的字長....不過C/C++標准中抽象出來的"機器",恐怕沒有字長這個概念吧.
2. 編譯器,簡單的說目前流行的的是32位機,但TC里的int就是16位的,流行的編譯器(gcc,VC)都是32位。
另外64位機也有了,但上面的int還是可以是32位的。
與此同時,就算在32位機上,也可以做出64位的int來。
所以只要願意,編譯器能決定出int的大小,就算是8位的機器也能搞出64位的來。
3. 一個簡單大家都知道的事實!
trubo C的int是2字節
vc的int是4字節
再看java編譯器,無論在什么機器上,int都是那么大
所謂跟平台無關,就是跟機器和操作系統沒有關系!
=====================================
且看下面: likefermat 大神的 總結:
4. 機器第一作用,編譯器第二作用.
現在新出的機器開始有64位的,編譯器也逐漸的要適應這個改變,由32位向64位過渡.
如果機器是16位的,編譯器強制為32位的話,效率及其低下,沒那家廠商會做如此SB的事情,
我們現在的機器一般都是32位的,編譯器所以一般也是32位,但也支持64位的,
__int64 就是64字節的,
總之int 只是一個類型,沒有太大的意義,機器的位數才是關鍵所在!
離開機器,說有編譯器決定的人,實在不敢恭維.
難道要在8位機上實現64bit的編譯器?
機器進步了,編譯器跟不上,就要被淘汰,
編譯器超前了,效率低下,也不會有市場,
所以不要單純的討論編譯器或者機器了。
OVER!