关于数组元素初始化的有关问题

关于数组元素初始化的问题
“定义: static int a[5],静态存储,如果没有对a[5]进行元素赋值,则元素值都是0,
而定义 : int a[5],没有赋值元素值,元素值是不确定的,”这是我看到的书上是这么说的。
但是在实践中,当我编写如下程序:

#include<stdio.h>
int main(void){
int a[20]={1,2},i;
for(i=0;i<20;i++)
printf("%d ",a[i]);
}

为什么 输出结果是 1 2 0 0 0 0 0........ 我的问题是:我定于的数组又不是静态存储的,a[2]开始元素就没有赋值,元素值不是应该是不确定的么,为什么还像静态存储一样都为0?


------解决方案--------------------
只要你初始化了一个,全部都跟着初始化
------解决方案--------------------
你初始化了,={1,2}后面的会初始化为0,如果int a[5];那就是随机值了。
全局变量和静态变量如果你没有给初始化值,编译器会给它一个。
------解决方案--------------------
这个是你没有完全了解动态变量和静态变量:
动态变量:要是你不对任何一个初始化,数组的元素都不会初始化:要是对某一元素初始化了,其他的元素也将会初始化。
静态变量:不管你是否初始化,都会自动初始化为0。
你可以试试:如果你不对前两个初始化,那么就是随机的啦