#inttypes.h

C 言語では、stdint.h で定義された 4 種類の整数型に対して、ヘッダー ファイル inttypes.h 内に printf() および scanf() のプレースホルダーも提供されます。

  • 固定幅の整数型 (int8_t など)。
  • 最小幅の整数型 (int_least8_t など)。
  • 最速の最小幅整数型 (int_fast8_t など)。
  • 最大幅の整数型 (intmax_t など)。

printf() のプレースホルダーは、PRI + 元のプレースホルダー + type キーワード/width で構成されます。たとえば、元のプレースホルダーが %d の場合、対応するプレースホルダーは次のようになります。

・PRIdn(固定幅型) ・PRIdLEASTn(最小幅タイプ)

  • PRIdFASTn (最小幅最速タイプ) ・PRIdMAX(最大幅タイプ)

上記のプレースホルダーの「n」は、8、16、32、または 64 に置き換えることができます。

以下に使用例を示します。

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main(void) {
  int_least16_t x = 3490;
  printf("値は %" PRIdLEAST16 "!\n", x);
}

上記の例では、PRIdLEAST16 に対応する整数型は int_least16_t で、元のプレースホルダーは %d です。さらに、printf() の最初のパラメータは、複数の文字列の自動マージを使用します。

以下は、他の元のプレースホルダーに対応するプレースホルダーです。

  • %i: PRIin PRIiLEASTn PRIiFASTn PRIiMAX
  • %o: PRIon PRIoLASTn PRIoFASTn PRIoMAX
  • %u: プリウン PRIuLEASTn PRIuFASTn PRIuMAX
  • %x: PRIxn PRIxLEASTn PRIxFASTn PRIxMAX
  • %X: PRIXn PRIXLEASTn PRIXFASTn PRIXMAX

scanf() のプレースホルダー規則も同様です。

  • %d: SCNdn SCNdLEASTn SCNdFASTn SCNdMAX
  • %i: SCNiLEASTn SCNiFASTn SCNiMAX の SCN
  • %o: SCNon SCNoLEASTn SCNoFASTn SCNoMAX
  • %u: SCNun SCNuLEASTn SCNuFASTn SCNuMAX
  • %x: SCNxn SCNxLEASTn SCNxFASTn SCNxMAX

作者: wangdoc

アドレス: https://wangdoc.com/

ライセンス: クリエイティブ・コモンズ 3.0