Вопросы

Пожалуйста, почему этот код печатается с дополнительным n, когда я его запускаю?

Я пытаюсь получить 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

Похожие записи

проблемы с разрешениями организации Azure DevOps — ошибка 401

admin

Почтовый запрос получен на машине, но сервер не распознает его, если источник не является локальным

admin

как получить HTML-контент из curl_multi_init?

admin

WPF UserControls: имейте команду, которая доступна только внутри UserControl.

admin

DiscordAPIError: Unknown Message (Бот для назначения ролей в сообщении)

admin

VSCode при обнаружении тестов Ошибка: порождение python ENOENT

admin