C 程式設計/inttypes.h
外觀
< C 程式設計
(重定向自 C 程式設計/C 參考/inttypes.h)inttypes.h 檔案是 C 標頭檔案,它是 C 標準庫 和 API 的一部分。它是在 1999 年版的 ISO C 標準 (稱為 C99) 中新增的。它 包含 stdint.h 標頭檔案,並定義了許多 宏,以便與 printf 和 scanf 函式族一起使用,以及用於處理 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]。
- ↑ a b http://manpages.ubuntu.com/manpages/gutsy/man7/inttypes.h.7posix.html
- ↑ https://cppreference.tw/w/cpp/types/integer
- ↑ http://linux.die.net/man/3/int64_t
- ↑ The Open Group Specifications Issue 6. "應用程式使用和基本原理". IEEE 和 The Open Group.
- ↑ The Open Group 規範 Issue 6. "應用程式使用和原理". IEEE 和 The Open Group 基礎. 檢索於 2011 年 9 月 14 日.
{{cite web}}: 檢查日期值:|accessdate=(幫助)