次のマクロは、inttypes.h 内で定義されています。それぞれ、変換指定子を含む文字ストリング・リテラルに展開されます。この変換指定子は、対応する整数型を変換する際に定様式入出力関数の format 引数の中で使用できる長さ修飾子によって修飾できます。 これらのマクロは、一般形式の PRI (fprintf() および fwprintf() ファミリーの関数の文字ストリング・リテラル) または SCN (fscanf() および fwscanf() ファミリーの関数の文字ストリング・リテラル) を使用し、その後に変換指定子と、<inttypes.h> 内の同様な型名に対応する名前を続けて指定します。 これらの名前の中で、接尾部の数値は型の幅を表します。例えば、PRIdFAST32 は、int_fast32_t 型の整数値を印刷するための書式制御ストリングの中で使用できます。
コンパイル要件:
次に示すリストの中で、接尾部 MAX または 64 を含むすべてのマクロを使用するには、long long が使用可能であることが必要です。
PRId8 | PRId16 | PRId32 | PRId64 |
PRIdLEAST8 | PRIdLEAST16 | PRIdLEAST32 | PRIdLEAST64 |
PRIdFAST8 | PRIdFAST16 | PRIdFAST32 | PRIdFAST64 |
PRIdMAX | |||
PRIdPTR | |||
PRIi8 | PRIi16 | PRIi32 | PRIi64 |
PRIiLEAST8 | PRIiLEAST16 | PRIiLEAST32 | PRIiLEAST64 |
PRIiFAST8 | PRIiFAST16 | PRIiFAST32 | PRIiFAST64 |
PRIiMAX | |||
PRIiPTR |
例
#define _ISOC99_SOURCE
#include <inttypes.h>
#include <stdio.h>
int main(void)
{
int8_t i = 40;
printf("Demonstrating the use of the following macros:¥n");
printf("Using PRId8, the printed value of 40 "
"is %" PRId8"¥n", i);
printf("Using PRIiFAST8, the printed value of 40 "
"is %" PRIiFAST8"¥;n", i);
printf("Using PRIoLEAST8, the printed value of 40 "
"is %" PRIoLEAST8 "¥n", i);
return 0;
}
出力:
Demonstrating the use of the following macros:
Using PRId8, the printed value of 40 is 40
Using PRIiFAST8, the printed value of 40 is 40
Using PRIoLEAST8, the printed value of 40 is 50
コンパイル要件:
次に示すリストの中で、接尾部 MAX または 64 を含むすべてのマクロを使用するには、long long が使用可能であることが必要です。
符号なし整数に対する fprintf ファミリー用のマクロ:
PRIo8 | PRIo16 | PRIo32 | PRIo64 |
PRIoLEAST8 | PRIoLEAST16 | PRIoLEAST32 | PRIoLEAST64 |
PRIoFAST8 | PRIoFAST16 | PRIoFAST32 | PRIoFAST64 |
PRIoMAX | |||
PRIoPTR | |||
PRIu8 | PRIu16 | PRIu32 | PRIu64 |
PRIuLEAST8 | PRIuLEAST16 | PRIuLEAST32 | PRIuLEAST64 |
PRIuFAST8 | PRIuFAST16 | PRIuFAST32 | PRIuFAST64 |
PRIuMAX | |||
PRIuPTR | |||
PRIx8 | PRIx16 | PRIx32 | PRIx64 |
PRIxLEAST8 | PRIxLEAST16 | PRIxLEAST32 | PRIxLEAST64 |
PRIxFAST8 | PRIxFAST16 | PRIxFAST32 | PRIxFAST64 |
PRIxMAX | |||
PRIxPTR | |||
PRIX8 | PRIX16 | PRIX32 | PRIX64 |
PRIXLEAST8 | PRIXLEAST16 | PRIXLEAST32 | PRIXLEAST64 |
PRIXFAST8 | PRIXFAST16 | PRIXFAST32 | PRIXFAST64 |
PRIXMAX | |||
PRIXPTR |
例
#define _ISOC99_SOURCE
#include <inttypes.h>
#include <stdio.h>
int main(void)
{
uint32_t i = 24000;
printf("Demonstrating the use of the following macros:¥n");
printf("Using PRIuPTR, the address of the variable "
"is %" PRIuPTR "¥n", i);
printf("Using PRIXFAST32, the printed value of 24000 "
"is %" PRIXFAST32"¥n", i);
printf("Using PRIxLEAST32, the printed value of 24000 "
"is %" PRIxLEAST32 "¥n", i);
return 0;
}
出力:
Demonstrating the use of the following macros:
Using PRIuPTR, the address of the variable is 538874544
Using PRIXFAST32, the printed value of 24000 is 5DC0
Using PRIxLEAST32, the printed value of 24000 is 5dc0
コンパイル要件:
次に示すリストの中で、接尾部 MAX または 64 を含むすべてのマクロを使用するには、long long が使用可能であることが必要です。
符号付き整数に対する fscanf ファミリー用のマクロ:
SCNd8 | SCNd16 | SCNd32 | SCNd64 |
SCNdLEAST8 | SCNdLEAST16 | SCNdLEAST32 | SCNdLEAST64 |
SCNdFAST8 | SCNdFAST16 | SCNdFAST32 | SCNdFAST64 |
SCNdMAX | |||
SCNdPTR | |||
SCNi8 | SCNi16 | SCNi32 | SCNi64 |
SCNiLEAST8 | SCNiLEAST16 | SCNiLEAST32 | SCNiLEAST64 |
SCNiFAST8 | SCNiFAST16 | SCNiFAST32 | SCNiFAST64 |
SCNiMAX | |||
SCNiPTR |
例
#define _ISOC99_SOURCE
#include <inttypes.h>
#include <stdio.h>
int main(void)
{
int32_t i;
printf("Enter decimal value ");
scanf("%" SCNdFAST32, i);
printf("Print result: %" PRIdFAST32 "¥n", i);
return 0;
}
出力:
Enter decimal value 23
Print result: 23
コンパイル要件:
次に示すリストの中で、接尾部 MAX または 64 を含むすべてのマクロを使用するには、long long が使用可能であることが必要です。
符号付き整数に対する fscanf ファミリー用のマクロ:
SCNo8 | SCNo16 | SCNo32 | SCNo64 |
SCNoLEAST8 | SCNoLEAST16 | SCNoLEAST32 | SCNoLEAST64 |
SCNoFAST8 | SCNoFAST16 | SCNoFAST32 | SCNoFAST64 |
SCNoMAX | |||
SCNoPTR | |||
SCNu8 | SCNu16 | SCNu32 | SCNu64 |
SCNuLEAST8 | SCNuLEAST16 | SCNuLEAST32 | SCNuLEAST64 |
SCNuFAST8 | SCNuFAST16 | SCNuFAST32 | SCNuFAST64 |
SCNuMAX | |||
SCNuPTR | |||
SCNx8 | SCNx16 | SCNx32 | SCNx64 |
SCNxLEAST8 | SCNxLEAST16 | SCNxLEAST32 | SCNxLEAST64 |
SCNxFAST8 | SCNxFAST16 | SCNxFAST32 | SCNxFAST64 |
SCNxMAX | |||
SCNxPTR |
例
#define _ISOC99_SOURCE
#include <inttypes.h>
#include <stdio.h>
int main(void)
{
intmax_t i;
printf("Enter hex value ");
scanf("%" SCNxMAX, i);
printf("Print result: %020" PRIxMAX "¥n", i);
return 0;
}
出力:
Enter hex value 0x32
Print result: 00000000000000000032