带有char数组的pid_t的初始值是多少? [复制]
Posted
技术标签:
【中文标题】带有char数组的pid_t的初始值是多少? [复制]【英文标题】:what is initial value of pid_t with char array? [duplicate] 【发布时间】:2020-08-10 21:49:11 【问题描述】:当我试图了解流程时,我注意到了一些事情
int main()
pid_t pid,w;
printf("value of w: %d\n", w);
return 0;
当我运行上面的代码时,w的值为0。到目前为止没有问题。
但是
当我在下面的代码中添加 char 数组时
int main()
pid_t pid,w;
char arr [3];
printf("value of w: %d\n", w);
return 0;
每次运行时 w 的值都是随机变化的。搞不懂这是什么原因,char数组的作用是什么?
【问题讨论】:
这能回答你的问题吗? (Why) is using an uninitialized variable undefined behavior? 【参考方案1】:变量的值是不确定的。当您读取不确定的值时(根据pid_t
的定义,在这种情况下可能会或可能不会应用异常,通常不会应用),程序的行为是未定义的。
由于某些未知原因,您选择期望在对程序进行更改时行为保持不变。当程序未定义时,无法保证程序的行为,这样的期望不是一个合理的假设。
【讨论】:
【参考方案2】:在 C 和 C++ 中,变量在声明时不会自动初始化。如果您未能初始化它们,则这些变量的状态是未定义的。您需要更改代码以初始化您的 pid_t 变量:
int main()
pid_t pid = 0;
pid_t w = 0;
char arr [3] = 0, 0, 0;
printf("value of w: %d\n", w);
return 0;
【讨论】:
旁注:有时它们会为您初始化。全局变量,例如 好点。也许更好的答案是:C/C++ 中的变量并不总是为您初始化,您可能应该始终初始化它们,除非您有理由不避免现在的错误或将来维护您的代码的人的错误。以上是关于带有char数组的pid_t的初始值是多少? [复制]的主要内容,如果未能解决你的问题,请参考以下文章