Ответ 1
Там нет такого спецификатора. Я думаю, что вы делаете, это хорошо & hellip; Вы можете использовать еще более широкий тип int, но нет реализации, в которой pid_t
больше, чем long
и, вероятно, никогда не будет.
В настоящее время я использую явное преобразование в long и используя %ld
для печати pid_t
, существует ли спецификатор, например %z
для size_t
для pid_t
?
Если не лучший способ печати pid_t
?
Там нет такого спецификатора. Я думаю, что вы делаете, это хорошо & hellip; Вы можете использовать еще более широкий тип int, но нет реализации, в которой pid_t
больше, чем long
и, вероятно, никогда не будет.
С целочисленными типами, не имеющими соответствующего спецификатора формата, как в случае pid_t
, но с известным знаком 1, приведите к самому широкому совпадению со знаком типа и напечатайте. Если знак не известен, приведите к самому широкому типу без знака.
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);
1
Тип данных pid_t
представляет собой целочисленный тип со знаком, который может представлять идентификатор процесса.