【发布时间】:2020-02-03 00:24:24
【问题描述】:
我正在尝试使用此代码获取 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。
【问题讨论】:
-
您希望
%lun中的n做什么?应该是\n? -
n不是格式说明符%lu的一部分;它是常规字符串的一部分。它按原样打印出来。 -
除了 UnholySheep 的注释,
%lu专门用来打印一个unsigned long,后面的n被简单地当作字符串字面量处理,就像前缀pid :一样。 -
好的。我现在明白了。谢谢大家让这个更清楚。
标签: c