跳轉到內容

C 程式設計/inttypes.h

來自華夏公益教科書

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

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

[編輯 | 編輯原始碼]

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

前三個字元
[編輯 | 編輯原始碼]
第四個字元
[編輯 | 編輯原始碼]
剩餘字元
[編輯 | 編輯原始碼]
  • N 用於 N 大小分配給資料型別(例如,32 用於 整數 的 32 位大小,16 用於無符號整數的 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]。它還可以透過使用標頭檔案中列出的宏,將資料型別修飾符(如無符號整數和有符號整數)的大小限制為特定值[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. The Open Group Specifications Issue 6. "應用程式使用和基本原理". IEEE 和 The Open Group.
  5. The Open Group 規範 Issue 6. "應用程式使用和原理". IEEE 和 The Open Group 基礎. 檢索於 2011 年 9 月 14 日. {{cite web}}: 檢查日期值:|accessdate= (幫助)
[編輯 | 編輯原始碼]
華夏公益教科書