首页 > 解决方案 > 请问,为什么当我运行这段代码时,它会打印一个额外的“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”。我得到“60316n”的pid。

标签: c

解决方案


n出于同样的原因p打印出来。 n不是说明符的一部分。

      vvv  --- specifier for unsigned long 
"pid: %lun"
 ^^^^^   ^ --- non-specifier characters

在旁边:

pid_t数据类型是有符号整数类型, 能够表示进程 ID

请参阅打印 pid_t 的正确 printf 说明符是什么?


推荐阅读