現在、明示的なlongへのキャストを使用しており、%ld
を使用してpid_t
を使用していますが、%z
for size_t
for pid_t
などの指定子はありますか?
そうでない場合、pid_t
を印刷する最良の方法は何ですか?
そのような指定子はありません。私はあなたがやっていることは素晴らしいと思う...あなたはさらに広いint型を使用することができますが、pid_t
はlong
より大きく、おそらくそうなることはありません。
pid_t
の場合のように、一致する書式指定子を欠く整数型で、既知の符号性を持つ場合、最も広い一致する符号付き型にキャストして印刷します。符号が不明な場合は、最も広い符号なしの型にキャストします。
pid_t pid = foo();
// C99
#include <stdint.h>
printf("pid = %jd\n", (intmax_t) pid);
または
// C99
#include <stdint.h>
#include <inttypes.h>
printf("pid = %" PRIdMAX "\n", (intmax_t) pid);
または
// pre-C99
pid_t pid = foo();
printf("pid = %ld\n", (long) pid);