我想在变量上保存当前进程ID。
所以,我这样做:
double id = 0; //全局变量
…..
id = getpid();
printf(“%d%d”,id,getpid()); //结果不一样……好吧,我……
这里的问题是使用 printf 。你的id变量是类型的 double ,你把它传递给 printf 当它期待一个 int 。这将彻底打破结果。
printf
double
int
更换
double id = 0;
同
long id;
保持它是一个整体类型。
另外,替换
printf("%d %d", id, getpid());
printf("%ld %ld", id, (long) getpid());
确保将期望的类型传递给printf。
此外,无需初始化 id 由于您以后无条件地分配给它,因此为0。
id
问题是你在打印 id 格式错误。你应该使用 %f :
%f
printf("%f %d", id, getpid());
正确的printf格式说明符为double
或者把它投到 int :
printf("%d %d", (int)id, getpid());
更好的想法是在声明时使用正确的类型 id :
pid_t id;
这是一个整数类型,而不是浮点类型。