char数组的pid_t的初始值是什么?

问题描述

当我试图了解流程时,我发现了一些东西

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数组的作用是什么?

解决方法

变量的值不确定。当您读取不确定的值时(根据pid_t的定义,在某些情况下可能适用或可能不适用-通常不适用的例外情况),程序的行为是不确定的。

由于某些未知的原因,您选择期望对程序进行更改后行为保持不变。当程序未定义时,不能保证程序的行为,这种期望并不是合理的假设。

,

在C和C ++中,声明变量时不会自动对其进行初始化。如果无法初始化它们,则这些变量的状态是不确定的。您需要更改代码以初始化pid_t变量:

int main(){
  pid_t pid = 0;
  pid_t w = 0;
  char arr [3] = {0,0};
  
  printf("value of w: %d\n",w);
  
  return 0;

}