C语言规定,普通数组没有赋初值,默认的数组元素值是随机数,不是0。如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。
编译器说了算。C语言只有C89,C99这样的标准。根据你数组的位置,如果是在栈内,也就是函数体内申请的局部变量,是随机值。如果是全局,全局变量或者静态变量static,那么编译器会自动给赋值成0值。