C++ 带字符数组的pid_t的初始值是多少?

C++ 带字符数组的pid_t的初始值是多少?,c++,c,linux,process,systems-programming,C++,C,Linux,Process,Systems Programming,当我试图理解过程时,我注意到了一些东西 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; } 每

当我试图理解过程时,我注意到了一些东西

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时,w的值都会随机变化。我无法理解原因,字符数组的效果如何?

变量的值是不确定的。当您读取不确定值时(根据
pid\t
的定义,在这种情况下可能会或可能不会(通常不会)出现异常),程序的行为是未定义的


出于某种未知的原因,您选择了在更改程序时希望行为保持不变。当程序未定义时,无法保证程序的行为,并且这种预期不是合理的假设。

变量的值是不确定的。当您读取不确定值时(根据
pid\t
的定义,在这种情况下可能会或可能不会(通常不会)出现异常),程序的行为是未定义的


出于某种未知的原因,您选择了在更改程序时希望行为保持不变。当程序未定义时,程序的行为不能保证,这样的期望不是一个合理的假设。在声明C++时,C和C++变量中的

< P>不能自动初始化。如果初始化失败,则这些变量的状态未定义。您需要更改代码以初始化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和C++变量的P>不会自动初始化。如果初始化失败,则这些变量的状态未定义。您需要更改代码以初始化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;

}

这回答了你的问题吗?这回答了你的问题吗?旁注:有时它们确实会为您初始化。全局变量,例如good point。也许更好的答案是:C/C++中的变量并不总是为您初始化的,您可能应该总是初始化它们,除非您有理由不避免现在出现错误或将来有人维护您的代码时出现错误。旁注:有时它们会为您初始化。全局变量,例如good point。也许更好的答案是:C/C++中的变量并不总是为您初始化的,您可能应该总是初始化它们,除非您有理由不避免现在的错误或将来有人维护您的代码时出现错误。