Я пытаюсь получить pid, используя этот код. Но когда я запустил скомпилированный код. Я получаю сообщение об ошибке «предупреждение: формат указывает тип« unsigned long », но аргумент имеет тип« pid_t »(также известный как« int »)[-Wformat]».
Когда я изменил спецификатор формата на просто «%lu», он печатается без дополнительного символа.
#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main() { pid_t pid = getpid(); printf(«pid: %lun», pid); }
Я ожидал pid «60316». Я получаю pid «60316n».
И что вы ожидаете от n в %lun? Это должно было быть n? — person jennylearner schedule 04.10.2019
n не является частью спецификатора формата %lu; это часть обычной строки. Распечатывается как есть. — person jennylearner schedule 04.10.2019
В дополнение к комментарию UnholySheep, %lu специально используется для печати unsigned long, последующее n просто обрабатывается как строковый литерал, точно так же, как префикс pid :. — person jennylearner schedule 04.10.2019
Хорошо. Я понял теперь. Спасибо всем за то, что сделали это яснее. — person jennylearner schedule 04.10.2019
Источник: