跳轉到內容

C 程式設計/inttypes.h

來自華夏公益教科書,開放的書籍,為開放的世界

inttypes.h 檔案是 C 標頭檔案,它是 C 標準庫API 的一部分。它是在 ISO C 標準的 1999 版本(稱為 C99)中新增的。它 包含 stdint.h 標頭檔案,併為使用 printfscanf 函式系列定義了許多 ,以及用於處理 intmax_t 型別的函式。

宏的命名約定和格式說明符

[編輯 | 編輯原始碼]

在 inttypes.h 中定義的宏遵循一種規律模式,以簡化使用。遵循的模式如下[1] 

前三個字元
[編輯 | 編輯原始碼]
第四個字元
[編輯 | 編輯原始碼]
剩餘字元
[編輯 | 編輯原始碼]
  • N 用於 N 大小分配給資料型別(例如,對於 整數 為 32 位大小,對於無符號 int 為 16 位大小,等等)
  • PTR 用於 指標
  • MAX 用於最大支援的位大小
  • FAST,其含義沒有明確定義,留給實現來決定“快速”整數資料型別的含義。

下表給出了 inttypes.h 中列出的各種資料型別使用的語法[2][3]

固定寬度整數 帶符號 無符號
8 位 int8_t uint8_t
16 位 int16_t uint16_t
32 位 int32_t uint32_t
64 位 int64_t uint64_t
小 & 固定整數型別 帶符號 無符號
8 位 int_least8_t uint_least8_t
16 位 int_least16_t uint_least16_t
32 位 int_least32_t uint_least32_t
64 位 int_least64_t uint_least64_t
快速 & 固定整數型別 帶符號 無符號
8 位 int_fast8_t uint_fast8_t
16 位 int_fast16_t uint_fast16_t
32 位 int_fast32_t uint_fast32_t
64 位 int_fast64_t uint_fast64_t

基本原理

[編輯 | 編輯原始碼]

16 位、32 位和 64 位系統等不同處理器中的處理速度差異要求各種資料型別具有統一的大小。ISO/IEC 9899:1990 規定該語言應支援 char、int、short 和 long 等基本資料型別,但沒有限制這些資料型別的最小或最大大小,除了 int 至少為 16 位長,long 為 32 位長。

在 16 位系統中,大多數實現分別為 char、short、int 和 long 資料型別分配了 8、16、16 和 32 位。在 32 位系統中,它分別為 char、short、int 和 long 資料型別分配了 8、16、32 和 32 位[1]。int 大小上的差異給從一個系統遷移到另一個系統的使用者帶來了問題。

包含此標頭檔案的主要目的是限制,或者換句話說,將 int 資料型別的確切大小限制為特定值(可能是 16 位或 32 位)[4]。它還可用於透過使用標頭檔案中列出的宏將無符號 int 和帶符號 int 等資料型別修飾符的大小限制為特定值[5]

另請參閱

[編輯 | 編輯原始碼]

參考文獻

[編輯 | 編輯原始碼]
  1. a b http://manpages.ubuntu.com/manpages/gutsy/man7/inttypes.h.7posix.html
  2. https://cppreference.tw/w/cpp/types/integer
  3. http://linux.die.net/man/3/int64_t
  4. 開放組規範第 6 版. "應用程式使用和基本原理". IEEE 和開放組.
  5. 開放組規範第 6 版. "應用程式使用和基本原理". IEEE 和開放組基礎. 檢索於 2011 年 9 月 14 日. {{cite web}}: 請檢查日期值: |accessdate= (幫助)
[編輯 | 編輯原始碼]
華夏公益教科書