[英]Understanding fixed width integer types
我理解固定寬度類型的想法,但我對參考提供的解釋感到困惑:
有符號整數類型,寬度分別為8,16,32和64位,沒有填充位,負值使用2的補碼(僅當實現直接支持該類型時提供)
所以據我所知,如果我能夠編譯一個應用程序,一切都應該在能夠運行它的平台上運行。 有我的問題:
sizeof(char)
在每個平台上只有一個字節,不管平台之間的字節大小是多少,這是否意味着int8_t
和uint8_t
保證在任何地方都可用? 如果實現沒有提供您使用的類型,它將不存在,您的代碼將無法編譯。 在這種情況下,將需要手動移植。
關於你的第二個問題:雖然我們知道sizeof(char) == 1
,但不能保證char
只有8位; 它可以擁有更多。 如果是這種情況, int8_t
和朋友將不存在。
請注意,如果您不需要知道確切的寬度,還有其他類型可以為您的用例提供足夠的保證,例如int_least8_t
或int_fast8_t
。 這些使實現更加自由,使它們更具可移植性。
但是,如果您的目標是不存在常見整數類型的平台,那么您應該提前知道; 所以不值得花太多時間來解決那些最有可能無關緊要的問題。 這些平台相對異國情調。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.