C语言中static int x;不赋值为什么不是野值

有static静态变量的,是零

img

无static静态变量的,是未知数

img


这是什么原因?

静态变量与全局变量不给初值时默认是零,局部非静态变量默认值不确定。

所有的全局变量,即定义在函数外的变量,默认值为0。
所有的静态局部变量,即定义在函数内部的(eg:static int a)形式的,默认值为0。

你应该没理解static,他的作用是将定义静态变量,静态存储在堆区中,只有程序结束后才会释放空间,其实也就是全局变量,全局变量的默认值为0