2017-09-27 75 views
1

我有一個非常大的傳統Visual Studio解決方案,並且在我感興趣的類型的某些源代碼中是unsigned long。我無法更改此代碼,我想知道何時用作計數器的該類型的變量會發生滾動。給定一個固定的平臺,sizeof可以爲同一類型返回不同的大小嗎?

我寫了一個不同的非常小的Visual Studio項目有一個簡單的程序std::cout << sizeof(unsigned long)我得到4:我可以假設sizeof(unsigned long)4也是在大的解決方案?或者是否有一些構建/編譯器選項可以改變它?

是否有任何特定於Microsoft的編譯器選項,可以在每個項目的基礎上更改內置類型的大小?

+1

如果您需要一個固定大小的整數,請查看''。不要假設'unsigned long' – StoryTeller

+0

@StoryTeller是的,謝謝,我知道''。 –

+1

我懷疑你有這個問題的別有用心的動機。值得在你的帖子中提及它。在這種情況下得到的答案可能會比簡單的是/否更好。 – StoryTeller

回答

0

我可以假設sizeof(unsigned long)在大解決方案中也給出了4嗎?

具體是(Windows,Visual Studio)。 否,一般情況下。

sizeof(void *) : depends on the target platform. 
sizeof(long ) : standard guarantees at least 4 bytes, but it could be larger. 

參見:SO : sizeof basic types

+0

對Microsoft文檔的任何引用? –

2

行情從微軟的Data Type Ranges

的Visual C++ 32位和64位編譯器識別類型表本文後面英寸

Type   | Bytes 
unsigned long | 4 

Fundamental Types C++

微軟具體

下表列出存儲在Microsoft C++ 基本類型所需的量。

     Type       | Size 
float, __int32, int, unsigned int, long, unsigned long | 4 bytes 

因此,答案是肯定的(用於Microsoft Visual C++)。

更新:

有沒有具體到微軟的任何編譯器選項,可以改變大小的內置類型上每個項目的基礎是什麼?

從文檔看,它看起來像Microsoft C++編譯器保證它是4個字節。因此,我認爲沒有可以改變這一點的選項(至少對於現有的編譯器)。

+0

你寫的是正確的,但似乎沒有回答我的問題。是否有任何特定於Microsoft的編譯器選項可以改變內置類型的大小? –

+1

@AlessandroJacopson它從邏輯上遵循文檔,Microsoft C++編譯器的大小始終爲4。因此,我認爲,它不能通過編譯器選項進行更改(至少對於當前現有的編譯器)。更新了帖子。 – AMA

相關問題