C 程式設計/inttypes.h
外觀
< C 程式設計
inttypes.h 檔案是 C 標頭檔案,它是 C 標準庫 和 API 的一部分。它是在 ISO C 標準的 1999 版本(稱為 C99)中新增的。它 包含 stdint.h 標頭檔案,併為使用 printf 和 scanf 函式系列定義了許多 宏,以及用於處理 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]。
- ↑ 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
- ↑ 開放組規範第 6 版. "應用程式使用和基本原理". IEEE 和開放組.
- ↑ 開放組規範第 6 版. "應用程式使用和基本原理". IEEE 和開放組基礎. 檢索於 2011 年 9 月 14 日.
{{cite web}}: 請檢查日期值:|accessdate=(幫助)