问题描述
当我试图了解流程时,我发现了一些东西
int main(){
pid_t pid,w;
printf("value of w: %d\n",w);
return 0;
}
运行上面的代码时,w的值为0。到目前为止没有问题。
但是
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;
}