簡體   English   中英

了解固定寬度整數類型

[英]Understanding fixed width integer types

我理解固定寬度類型的想法,但我對參考提供的解釋感到困惑:

有符號整數類型,寬度分別為8,16,32和64位,沒有填充位,負值使用2的補碼(僅當實現直接支持該類型時提供)

所以據我所知,如果我能夠編譯一個應用程序,一切都應該在能夠運行它的平台上運行。 有我的問題:

  1. 如果某個平台不支持這些類型怎么辦? 是否使用某種對齊方式或應用程序根本沒有?
  2. 如果我們保證sizeof(char)在每個平台上只有一個字節,不管平台之間的字節大小是多少,這是否意味着int8_tuint8_t保證在任何地方都可用?

如果實現沒有提供您使用的類型,它將不存在,您的代碼將無法編譯。 在這種情況下,將需要手動移植。

關於你的第二個問題:雖然我們知道sizeof(char) == 1 ,但不能保證char只有8位; 它可以擁有更多。 如果是這種情況, int8_t和朋友將不存在。

請注意,如果您不需要知道確切的寬度,還有其他類型可以為您的用例提供足夠的保證,例如int_least8_tint_fast8_t 這些使實現更加自由,使它們更具可移植性。

但是,如果您的目標是不存在常見整數類型的平台,那么您應該提前知道; 所以不值得花太多時間來解決那些最有可能無關緊要的問題。 這些平台相對異國情調。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM