名稱空間
變體
操作

固定寬度整數型別 (C99 起)

來自 cppreference.com
< c‎ | 型別

目錄

[編輯] 型別

定義於標頭檔案 <stdint.h>
int8_t
int16_t
int32_t
int64_t
寬度分別為
恰好 8、16、32 和 64 位的有符號整數型別
沒有填充位,對負值使用 2 的補碼
(僅當實現直接支援該型別時才提供)
int_fast8_t
int_fast16_t
int_fast32_t
int_fast64_t
寬度至少分別為
8、16、32 和 64 位的最快有符號整數型別
int_least8_t
int_least16_t
int_least32_t
int_least64_t
寬度至少為的最小有符號整數型別
8、16、32 和 64 位的最快有符號整數型別
intmax_t 最大寬度整數型別
intptr_t 能夠容納指標的整數型別
uint8_t
uint16_t
uint32_t
uint64_t
寬度分別為
恰好 8、16、32 和 64 位的有符號整數型別
(僅當實現直接支援該型別時才提供)
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
寬度至少分別為的最快無符號整數型別
8、16、32 和 64 位的最快有符號整數型別
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
寬度至少為的最小無符號整數型別
8、16、32 和 64 位的最快有符號整數型別
uintmax_t 最大寬度無符號整數型別
uintptr_t 能夠容納指標的無符號整數型別

N 不是 8、16、32 或 64 時,實現可以定義類型別名 intN_tint_fastN_tint_leastN_tuintN_tuint_fastN_tuint_leastN_t。只有當實現支援具有該寬度且無填充的整數型別時,才能定義 intN_t 形式的類型別名。因此,uint24_t 表示寬度恰好為 24 位的無符號整數型別。

下面列出的每個宏當且僅當實現定義了相應的類型別名時才被定義。宏 INTN_CUINTN_C 分別對應於類型別名 int_leastN_tuint_leastN_t

[編輯] 宏常量

定義於標頭檔案 <stdint.h>
有符號整數:寬度
INT8_WIDTHINT16_WIDTHINT32_WIDTHINT64_WIDTH
(C23)(可選)
型別為 int8_tint16_tint32_tint64_t 的物件的位寬 (恰好為 8、16、32、64)
(宏常量)
INT_FAST8_WIDTHINT_FAST16_WIDTHINT_FAST32_WIDTHINT_FAST64_WIDTH
(C23)
型別為 int_fast8_tint_fast16_tint_fast32_tint_fast64_t 的物件的位寬
(宏常量)
INT_LEAST8_WIDTHINT_LEAST16_WIDTHINT_LEAST32_WIDTHINT_LEAST64_WIDTH
(C23)
型別為 int_least8_tint_least16_tint_least32_tint_least64_t 的物件的位寬
(宏常量)
INTPTR_WIDTH
(C23)(可選)
型別為 intptr_t 的物件的位寬
(宏常量)
INTMAX_WIDTH
(C23)
型別為 intmax_t 的物件的位寬
(宏常量)
有符號整數:最小值
INT8_MININT16_MININT32_MININT64_MIN
型別為 int8_tint16_tint32_tint64_t 的物件的最小值
(宏常量)
INT_FAST8_MININT_FAST16_MININT_FAST32_MININT_FAST64_MIN
型別為 int_fast8_tint_fast16_tint_fast32_tint_fast64_t 的物件的最小值
(宏常量)
INT_LEAST8_MININT_LEAST16_MININT_LEAST32_MININT_LEAST64_MIN
型別為 int_least8_tint_least16_tint_least32_tint_least64_t 的物件的最小值
(宏常量)
INTPTR_MIN
型別為 intptr_t 的物件的最小值
(宏常量)
INTMAX_MIN
型別為 intmax_t 的物件的最小值
(宏常量)
有符號整數:最大值
INT8_MAXINT16_MAXINT32_MAXINT64_MAX
型別為 int8_tint16_tint32_tint64_t 的物件的最大值
(宏常量)
INT_FAST8_MAXINT_FAST16_MAXINT_FAST32_MAXINT_FAST64_MAX
型別為 int_fast8_tint_fast16_tint_fast32_tint_fast64_t 的物件的最大值
(宏常量)
INT_LEAST8_MAXINT_LEAST16_MAXINT_LEAST32_MAXINT_LEAST64_MAX
型別為 int_least8_tint_least16_tint_least32_tint_least64_t 的物件的最大值
(宏常量)
INTPTR_MAX
型別為 intptr_t 的物件的最大值
(宏常量)
INTMAX_MAX
型別為 intmax_t 的物件的最大值
(宏常量)
無符號整數:寬度
UINT8_WIDTHUINT16_WIDTHUINT32_WIDTHUINT64_WIDTH
(C23)(可選)
型別為 uint8_tuint16_tuint32_tuint64_t 的物件的位寬 (恰好為 8、16、32、64)
(宏常量)
UINT_FAST8_WIDTHUINT_FAST16_WIDTHUINT_FAST32_WIDTHUINT_FAST64_WIDTH
(C23)
型別為 uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_t 的物件的位寬
(宏常量)
UINT_LEAST8_WIDTHUINT_LEAST16_WIDTHUINT_LEAST32_WIDTHUINT_LEAST64_WIDTH
(C23)
型別為 uint_least8_tuint_least16_tuint_least32_tuint_least64_t 的物件的位寬
(宏常量)
UINTPTR_WIDTH
(C23)(可選)
型別為 uintptr_t 的物件的位寬
(宏常量)
UINTMAX_WIDTH
(C23)
型別為 uintmax_t 的物件的位寬
(宏常量)
無符號整數:最大值
UINT8_MAXUINT16_MAXUINT32_MAXUINT64_MAX
型別為 uint8_tuint16_tuint32_tuint64_t 的物件的最大值
(宏常量)
UINT_FAST8_MAXUINT_FAST16_MAXUINT_FAST32_MAXUINT_FAST64_MAX
型別為 uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_t 的物件的最大值
(宏常量)
UINT_LEAST8_MAXUINT_LEAST16_MAXUINT_LEAST32_MAXUINT_LEAST64_MAX
型別為 uint_least8_tuint_least16_tuint_least32_tuint_least64_t 的物件的最大值
(宏常量)
UINTPTR_MAX
型別為 uintptr_t 的物件的最大值
(宏常量)
UINTMAX_MAX
型別為 uintmax_t 的物件的最大值
(宏常量)

[編輯] 用於最小寬度整數常量的函式宏

INT8_CINT16_CINT32_CINT64_C
展開為具有其引數指定的值和分別為 int_least8_tint_least16_tint_least32_tint_least64_t 型別的整數常量表達式
(函式宏)
INTMAX_C
展開為具有其引數指定的值和 intmax_t 型別的整數常量表達式
(函式宏)
UINT8_CUINT16_CUINT32_CUINT64_C
展開為具有其引數指定的值和分別為 uint_least8_tuint_least16_tuint_least32_tuint_least64_t 型別的整數常量表達式
(函式宏)
UINTMAX_C
展開為具有其引數指定的值和 uintmax_t 型別的整數常量表達式
(函式宏)
#include <stdint.h>
UINT64_C(0x123) // might expand to 0x123ULL or 0x123UL

[編輯] 格式宏常量

在標頭檔案 <inttypes.h> 中定義

[編輯] 用於 fprintf 函式族的格式常量

這裡列出的每個 PRI 宏當且僅當實現定義了相應的類型別名時才被定義。

等價於
int
unsigned int
描述 資料型別宏




[u]intx_t




[u]int_leastx_t
[u]int_fastx_t
[u]intmax_t
[u]intptr_t
d 輸出有符號十進位制整數值 PRIdx PRIdLEASTx PRIdFASTx PRIdMAX PRIdPTR
i PRIix PRIiLEASTx PRIiFASTx PRIiMAX PRIiPTR
u 輸出無符號十進位制整數值 PRIux PRIuLEASTx PRIuFASTx PRIuMAX PRIuPTR
o 輸出無符號八進位制整數值 PRIox PRIoLEASTx PRIoFASTx PRIoMAX PRIoPTR
x 輸出無符號小寫十六進位制整數值 PRIxx PRIxLEASTx PRIxFASTx PRIxMAX PRIxPTR
X 輸出無符號大寫十六進位制整數值 PRIXx PRIXLEASTx PRIXFASTx PRIXMAX PRIXPTR

[編輯] 用於 fscanf 函式族的格式常量

這裡列出的每個 SCN 宏當且僅當實現定義了相應的類型別名並且該型別具有合適的 fscanf 長度修飾符時才被定義。

等價於
int
unsigned int
描述 資料型別宏




[u]intx_t




[u]int_leastx_t
[u]int_fastx_t
[u]intmax_t
[u]intptr_t
d 輸入有符號十進位制整數值 SCNdx SCNdLEASTx SCNdFASTx SCNdMAX SCNdPTR
i 輸入有符號整數值 (基數由解析的第一個字元確定) SCNix SCNiLEASTx SCNiFASTx SCNiMAX SCNiPTR
u 輸入無符號十進位制整數值 SCNux SCNuLEASTx SCNuFASTx SCNuMAX SCNuPTR
o 輸入無符號八進位制整數值 SCNox SCNoLEASTx SCNoFASTx SCNoMAX SCNoPTR
x 輸入無符號十六進位制整數值 SCNxx SCNxLEASTx SCNxFASTx SCNxMAX SCNxPTR

[編輯] 示例

另請參閱關於本示例中使用的 格式宏 前的空格的 C++ 相容性說明

#include <inttypes.h>
#include <stdio.h>
 
int main(void)
{
    printf("%zu\n", sizeof(int64_t));
    printf("%s\n", PRId64);
    printf("%+" PRId64 "\n", INT64_MIN);
    printf("%+" PRId64 "\n", INT64_MAX);
 
    int64_t n = 7;
    printf("%+" PRId64 "\n", n);
}

可能的輸出

8
lld
-9223372036854775808
+9223372036854775807
+7

[編輯] 參考文獻

  • C23 標準 (ISO/IEC 9899:2024)
  • 7.8.1 格式說明符宏 (p: TBD)
  • 7.18 整數型別 <stdint.h> (p: TBD)
  • C17 標準 (ISO/IEC 9899:2018)
  • 7.8.1 格式說明符宏 (p: 158-159)
  • 7.18 整數型別 <stdint.h> (p: 212-216)
  • C11 標準 (ISO/IEC 9899:2011)
  • 7.8.1 格式說明符宏 (p: 217-218)
  • 7.18 整數型別 <stdint.h> (p: 289-295)
  • C99 標準 (ISO/IEC 9899:1999)
  • 7.8.1 格式說明符宏 (p: 198-199)
  • 7.18 整數型別 <stdint.h> (p: 255-261)

[編輯] 另請參閱

C++ 文件 關於 固定寬度整數型別
C++ 文件 關於 使用者定義字面量 (格式化宏說明)