尺寸

2011-08-24 138 views
4

可能重複:
Does the size of an int depend on the compiler and/or processor?尺寸

不依賴於編譯器或在OS或處理器整數的大小?如果我在使用32位或64位機器的32位操作系統或64位操作系統(本例中只有64位操作系統)上使用gcc,該怎麼辦?

+1

http://stackoverflow.com/questions/2331751/does-the-size-of-an-int-depend-on-the-compiler-and-or-processor/2331835#2331835 –

回答

3

取決於編譯器選項
當然它也取決於編譯器本身。
但是,編譯器是爲一個特定的OS製成,所以它依賴於OS
和/或
編譯器是爲特定的處理器作出的,因此它取決於處理器

+1

所以你的意思是說,在32位機器和64位機器上運行的gcc的大小會有所不同? – 0x07FC

+0

可能是。取決於使用的選項(http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html) – pmg

0

這取決於系統。系統的意思是處理器和操作系統的任意組合,但它通常綁定到正在使用的處理器的「自然」整數大小。

+0

「int」在64位英特爾系統上。在三大操作系統中,Windows,Linux和OS X中,int仍然是32位,而寄存器大小是64位。但是,在這些平臺上'long int'的大小是不同的。 –

1

整型,長等的大小,依賴於編譯器,但是編譯器實施者會選擇爲特定的處理器和/或操作系統的最佳大小。

0

一個int的大小,和幾乎所有其他的類型,在C是實現定義。某些編譯器可能會在特定的平臺上做出保證,但這取決於實現。這是你永遠不應該依賴的任何東西

+0

這可能是一個愚蠢的語義點,但在C中,int的大小是*實現定義*,而不是* undefined *。實現定義意味着實現必須與其所做的選擇一致,並且必須在某處記錄其選擇,而未定義則意味着所有投注都關閉,編譯器可以不一致並任意決定。 – templatetypedef

0

Integer的大小是否取決於編譯器,OS還是處理器?

是的。它可以依靠任何這些東西。

它實際上是由平臺ABI,它是由編譯器和運行時庫設置定義,但是編譯器使用在不同的操作系統或體系結構不同的ABI。

5

這取決於組合的編譯器,處理器和操作系統。

例如,在64位Intel CPU上,在64位模式下,Windows中long int的大小爲4字節,而在Linux中和Mac上則爲8字節。在英特爾的三個操作系統中,int均爲4個字節。

編譯器實現者也有選擇,但通常使用操作系統使用的東西。但很可能有一個編譯器供應商擁有所有三種平臺的C編譯器,因此決定在這三種平臺中使用相同的大小。

當然,它是沒有意義的,以16位CPU上使int 4字節(儘管這將是可能的)。

所以它取決於你提到的所有三件事情。