【C++Builder】C ランタイムライブラリリファレンス (inttypes.h)

# 整数型の書式変換 (Integer Types)

| ヘッダ<br>ファイル | [inttypes.h](https://docwiki.embarcadero.com/RADStudio/ja/Inttypes.h%EF%BC%9A%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9) |
|:---|:---|
| 規格 | C99 |
| 概要 | ヘッダ [stdint.h](https://qiita.com/ht_deko/items/df008fe9714418b38bf6) を取り込み、ホスト処理系によって提供される付加的な機能により、ヘッダ [stdint.h](https://qiita.com/ht_deko/items/df008fe9714418b38bf6) を拡張する。 |

## プラグマ

## 型

| 名前 | 機能 |
|:---|:---|
| imaxdiv_t | imaxdiv() が商と剰余を返す構造体型 |



## マクロ

### fprintf 用マクロ

`PRI` + 型指定子 + 整数型 

 - 型指定子 (`d` `i` `o` `u` `x` `X`) については [C/C++ の書式指定子](https://docwiki.embarcadero.com/RADStudio/ja/C/C%2B%2B_%E3%81%AE%E6%9B%B8%E5%BC%8F%E6%8C%87%E5%AE%9A%E5%AD%90) を参照してください
 - [stdint.h](https://qiita.com/ht_deko/items/df008fe9714418b38bf6) で定義されている整数型の数だけマクロを定義する事になっています


#### 符号付き整数用

| 整数型  | d | i |
|:---|:---|:---|
| int8_t       | PRId8        | PRIi8        |
| int16_t      | PRId16       | PRIi16       |
| int32_t      | PRId32       | PRIi32       |
| int64_t      | PRId64       | PRIi64       |
| int_least8_t | PRIdLEAST8   | PRIiLEAST8   |
| int_least16_t| PRIdLEAST16  | PRIiLEAST16  |
| int_least32_t| PRIdLEAST32  | PRIiLEAST32  |
| int_least64_t| PRIdLEAST64  | PRIiLEAST64  |
| int_fast8_t  | PRIdFAST8    | PRIiFAST8    |
| int_fast16_t | PRIdFAST16   | PRIiFAST16   |
| int_fast32_t | PRIdFAST32   | PRIiFAST32   |
| int_fast64_t | PRIdFAST64   | PRIiFAST64   |
| intmax_t     | PRIdMAX      | PRIiMAX      |
| intptr_t     | PRIdPTR      | PRIiPTR      |

#### 符号なし整数用

| 整数型 | o | u | x | X |
|:---|:---|:---|:---|:---|
| uint8_t       | PRIo8        | PRIu8        | PRIx8        | PRIX8        |
| uint16_t      | PRIo16       | PRIu16       | PRIx16       | PRIX16       |
| uint32_t      | PRIo32       | PRIu32       | PRIx32       | PRIX32       |
| uint64_t      | PRIo64       | PRIu64       | PRIx64       | PRIX64       |
| uint_least8_t | PRIoLEAST8   | PRIuLEAST8   | PRIxLEAST8   | PRIXLEAST8   |
| uint_least16_t| PRIoLEAST16  | PRIuLEAST16  | PRIxLEAST16  | PRIXLEAST16  |
| uint_least32_t| PRIoLEAST32  | PRIuLEAST32  | PRIxLEAST32  | PRIXLEAST32  |
| uint_least64_t| PRIoLEAST64  | PRIuLEAST64  | PRIxLEAST64  | PRIXLEAST64  |
| uint_fast8_t  | PRIoFAST8    | PRIuFAST8    | PRIxFAST8    | PRIXFAST8    |
| uint_fast16_t | PRIoFAST16   | PRIuFAST16   | PRIxFAST16   | PRIXFAST16   |
| uint_fast32_t | PRIoFAST32   | PRIuFAST32   | PRIxFAST32   | PRIXFAST32   |
| uint_fast64_t | PRIoFAST64   | PRIuFAST64   | PRIxFAST64   | PRIXFAST64   |
| uintmax_t     | PRIoMAX      | PRIuMAX      | PRIxMAX      | PRIXMAX      |
| uintptr_t     | PRIoPTR      | PRIuPTR      | PRIxPTR      | PRIXPTR      |


### fscanf 用マクロ

`SCN` + 型指定子 + 整数型 

 - 型指定子 (`d` `i` `o` `u` `x` `X`) については [C/C++ の書式指定子](https://docwiki.embarcadero.com/RADStudio/ja/C/C%2B%2B_%E3%81%AE%E6%9B%B8%E5%BC%8F%E6%8C%87%E5%AE%9A%E5%AD%90) を参照してください
 - [stdint.h](https://qiita.com/ht_deko/items/df008fe9714418b38bf6) で定義されている整数型の数だけマクロを定義する事になっています

#### 符号付き整数用

| 整数型  | d | i |
|:---|:---|:---|
| int8_t       | SCNd8        | SCNi8        |
| int16_t      | SCNd16       | SCNi16       |
| int32_t      | SCNd32       | SCNi32       |
| int64_t      | SCNd64       | SCNi64       |
| int_least8_t | SCNdLEAST8   | SCNiLEAST8   |
| int_least16_t| SCNdLEAST16  | SCNiLEAST16  |
| int_least32_t| SCNdLEAST32  | SCNiLEAST32  |
| int_least64_t| SCNdLEAST64  | SCNiLEAST64  |
| int_fast8_t  | SCNdFAST8    | SCNiFAST8    |
| int_fast16_t | SCNdFAST16   | SCNiFAST16   |
| int_fast32_t | SCNdFAST32   | SCNiFAST32   |
| int_fast64_t | SCNdFAST64   | SCNiFAST64   |
| intmax_t     | SCNdMAX      | SCNiMAX      |
| intptr_t     | SCNdPTR      | SCNiPTR      |

#### 符号なし整数用

| 整数型  | o | u | x |
|:---|:---|:---|:---|
| uint8_t       | SCNo8        | SCNu8        | SCNx8        |
| uint16_t      | SCNo16       | SCNu16       | SCNx16       |
| uint32_t      | SCNo32       | SCNu32       | SCNx32       |
| uint64_t      | SCNo64       | SCNu64       | SCNx64       |
| uint_least8_t | SCNoLEAST8   | SCNuLEAST8   | SCNxLEAST8   |
| uint_least16_t| SCNoLEAST16  | SCNuLEAST16  | SCNxLEAST16  |
| uint_least32_t| SCNoLEAST32  | SCNuLEAST32  | SCNxLEAST32  |
| uint_least64_t| SCNoLEAST64  | SCNuLEAST64  | SCNxLEAST64  |
| uint_fast8_t  | SCNoFAST8    | SCNuFAST8    | SCNxFAST8    |
| uint_fast16_t | SCNoFAST16   | SCNuFAST16   | SCNxFAST16   |
| uint_fast32_t | SCNoFAST32   | SCNuFAST32   | SCNxFAST32   |
| uint_fast64_t | SCNoFAST64   | SCNuFAST64   | SCNxFAST64   |
| uintmax_t     | SCNoMAX      | SCNuMAX      | SCNxMAX      |
| uintptr_t     | SCNoPTR      | SCNuPTR      | SCNxPTR      |


## 引数付きマクロ

## 関数

| 名前 | 機能 |
|:---|:---|
| imaxabs() | intmax_t 型の絶対値を取得 |
| imaxdiv() | intmax_t 型の商と剰余の取得 |
| strtoimax() | 文字列から intmax_t 型に変換 |
| strtoumax() | 文字列から uintmax_t 型に変換 |
| wcstoimax() | ワイド文字列から intmax_t 型に変換 |
| wcstoumax() | ワイド文字列から uintmax_t 型に変換 |

:::note
intmax_t 型は [stdint.h](https://qiita.com/ht_deko/items/df008fe9714418b38bf6) で定義されている最大の符号付き整数型です。uintmax_t 型は [stdint.h](https://qiita.com/ht_deko/items/df008fe9714418b38bf6) で定義されている最大の符号なし整数型です。
:::

## 資料

 - [C 言語 / 標準ライブラリ / inttypes.h (Wikibooks)](https://ja.wikibooks.org/wiki/C%E8%A8%80%E8%AA%9E/%E6%A8%99%E6%BA%96%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA/inttypes.h)
 - [z/OS C/C++ ランタイム・ライブラリー・リファレンス inttypes.h &#x2014; 整数型の入出力フォーマット (IBM)](https://www.ibm.com/docs/ja/zos/3.1.0?topic=files-inttypesh-io-format-integer-types)
 - [C 言語の標準ヘッダ一覧 inttypes.h (C 言語)](http://www.c-lang.org/detail/inttypes_h.html)

---

[&#x21E6; インデックスへ](https://qiita.com/ht_deko/items/31f4b37daa97270e2416)

---