標頭檔案

<cinttypes> (inttypes.h)

C 整數型別
固定寬度整數型別提供庫支援的標頭檔案。

包含此標頭檔案會自動包含 <cstdint>(它定義了固定寬度整數型別)。

以下宏會展開為包含 printfscanf 格式說明符的字串字面量,適用於與特定的固定寬度整數型別一起使用。
描述示例
PRIxMAX用於 intmax_tprintf 格式說明符PRIiMAX 等同於用於 intmax_t 值的 i (在 "%i" 中)
PRIxN用於 intN_tprintf 格式說明符PRId16 等同於用於 int16_t 值的 d (在 "%d" 中)
PRIxLEASTN用於 int_leastN_tprintf 格式說明符PRIuLEAST32 等同於用於 uint32_t 值的 u (在 "%u" 中)
PRIxFASTN用於 int_fastN_tprintf 格式說明符PRIxFAST8 等同於用於 uint8_t 值的 x (在 "%x" 中)
PRIxPTR用於 intptr_tprintf 格式說明符PRIuPTR 等同於用於 uintptr_t 值的 u (在 "%u" 中)
SCNxMAX用於 intmax_tscanf 格式說明符SCNiMAX 等同於用於 intmax_t 值的 i (在 "%i" 中)
SCNxN用於 intN_tscanf 格式說明符SCNd16 等同於用於 int16_t 值的 d (在 "%d" 中)
SCNxLEASTN用於 int_leastN_tscanf 格式說明符SCNuLEAST32 等同於用於 uint32_t 值的 u (在 "%u" 中)
SCNxFASTN用於 int_fastN_tscanf 格式說明符SCNxFAST8 等同於用於 uint8_t 值的 x (在 "%x" 中)
SCNxPTR用於 intptr_tscanf 格式說明符SCNuPTR 等同於用於 uintptr_t 值的 u (在 "%u" 中)
其中
  • xd, i, o,ux 中的一個(對於 printf 說明符,也可以是大寫的 X)。*
  • N 是 8、16、32、64,或庫在 <cstdint> 中支援的任何其他型別寬度。
* 對於 id,說明符假定型別為有符號;對於 ouxX,則假定為無符號。

函式

此標頭檔案還聲明瞭以下函式,這些函式針對 intmax_t 改編了 <cstdlib><cwchar> 中的函式。
函式描述
imaxabs等同於用於 intmax_tabs
intmax_t imaxabs (intmax_t n);
imaxdiv等同於用於 intmax_tdiv
imaxdiv_t imaxdiv (intmax_t numer, intmax_t denom);
strtoimax等同於用於 intmax_tstrtol
intmax_t strtoimax (const char* str, char** endptr, int base);
strtoumax等同於用於 uintmax_tstrtoul
uintmax_t strtoumax (const char* str, char** endptr, int base);
wcstoimax等同於用於 intmax_twcstol
intmax_t wcstoimax (const wchar_t* wcs, wchar_t** endptr, int base);
wcstoumax等同於用於 uintmax_twcstoul
uintmax_t wcstoumax (const wchar_t* wcs, wchar_t** endptr, int base);

在 C++ 中,包含此標頭檔案還會為 intmax_t 提供 absdiv 的過載(等同於上述函式),除非 intmax_t基本型別的別名。

型別

型別描述
imaxdiv_timaxdiv 返回的型別,它等同於用於 intmax_tdiv_t

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* example of <inttypes.h> */
#include <stdio.h>      /* printf, scanf, fgets, stdin, NULL */
#include <stdint.h>     /* intmax_t */
#include <inttypes.h>   /* strtoimax, PRIdMAX, SCNdMAX */

int main ()
{
  char buffer[80];
  intmax_t foo,bar;

  printf ("Please, enter a number: ");
  fgets (buffer,80,stdin);
  foo = strtoimax (buffer,NULL,10);

  printf ("Thanks for entering %" PRIdMAX ".\n", foo);

  printf ("Please, enter another number: ");
  scanf ("%" SCNdMAX,&bar);

  printf ("%" PRIdMAX " by %" PRIdMAX " is %" PRIdMAX, foo, bar, foo*bar);

  return 0;
}

可能的輸出

Please, enter a number: 10
Thanks for entering 10.
Please, enter another number: 20
10 by 20 is 200