簡體   English   中英

stdint.h 庫中是否包含 integer 類型“擴展 integer 類型”?

[英]Are the integer types included in the stdint.h library "extended integer types"?

我正在學習 integer 轉換等級,但我有一個問題,我經常使用 stdint.h 庫,對於我讀到的關於“整數轉換等級”的內容,它說:

“任何標准 integer 類型的等級應大於任何具有相同大小的擴展 integer 類型的等級。”

對於我所知道的“int”,例如,是一個標准的 integer 類型,但是使用 stdint.hi 有等於“int”的“int32_t”

我知道 stdint.h 庫使用“typedef”,所以理論上 int 和 int32_t 是相等的,但我在論壇上讀到“擴展 integer 類型”使用 (u)intxx_t 來引用

所以我的問題是,stdint.h 庫中包含的“精確寬度整數”是“標准 integer 類型”還是被認為是“擴展 integer 類型”?

感謝您的回答!

stdint.h中列出的類型不一定是擴展的 integer 類型。

C 標准的第 6.2.5 節定義了擴展的 integer 類型

4有五種標准的有符號 integer 類型,指定為signed charshort intintlong intlong long int (如 6.7.2 中所述,這些類型和其他類型可以用幾種額外的方式指定。)也可能有實現定義的擴展簽名 integer 類型 標准和擴展簽名 integer 類型統稱為簽名 integer 類型

...

7標准有符號integer類型和標准無符號integer類型統稱為標准integer類型,擴展有符號integer類型和擴展無符號integer類型統稱為擴展integer類型

所以上面聲明擴展 integer 類型是實現定義的。

第 7.20p4 節描述了 stdint.h header 中定義的類型:

對於實現提供的此處描述的每種類型, 261) <stdint.h>應聲明該 typedef 名稱並定義關聯的宏。 相反,對於此處描述的實現未提供的每種類型, <stdint.h>不應聲明該 typedef 名稱,也不應定義關聯的宏。 實現應提供那些描述為“必需”的類型,但不需要提供任何其他類型(描述為“可選”)。

所以這表明stdint.h中的類型是其他類型的類型定義。 關鍵部分是腳注 261,其中指出:

  1. 其中一些類型可能表示實現定義的擴展 integer 類型。

因此, stdint.h中的類型是否被視為標准類型或擴展 integer 類型取決於它們是什么類型定義。

暫無
暫無

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

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