[英]Difference between __int32 vs int vs int32_t (again)
web( 一, 二)的答案只說了一部分,省略了一些細節,希望大家幫我澄清一下:
int
分配不同數量的位。 因此,當我聲明 integer 時, Compiler A
可以使int
分配 50 位(例如)。__int32
(Microsoft-specifc)和int32_t
在這里解決問題並且:
我的哪一個猜測是正確的? 很抱歉再次提出老問題,但實際上我對所有分配功能感到困惑。
在此先感謝您的時間。
我的哪一個猜測是正確的?
- int,按照 C++ 標准,必須 >= 32 位。
不正確。 int
必須 >= 16 位。 long
必須 >= 32 位。
不同的編譯器(實現)可以使 int 分配不同數量的位
正確的。
... 默認。
我不知道有可配置 int 大小的編譯器——它通常直接取決於目標體系結構——但我想這是有可能的。
此外,不同的編譯器可能/可能不使用位填充
他們可能會。 他們不需要這樣做。
__int32(Microsoft-specifc)和 int32_t 在這里解決問題並且:
強制編譯器恰好分配 32 位。
切勿在此數據類型之前/之后使用位填充。
正確的。 更具體地說, std::int32_t
是一種基本類型的別名,它正好有 32 位且沒有填充。 如果編譯器沒有提供這樣的 integer 類型,那么也不會提供std::int32_t
別名。
Microsoft 文檔承諾__int32
存在並且它是int
的另一個名稱,並且它有 32 個非填充位。 在其他地方,Microsoft 記錄了int32_t
也是int
的別名。 因此,除了__int32
不是標准名稱之外沒有其他區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.