【C语言】初始化参数列表个数不足时是否一定自动补0

已知C99标准下,初始化参数列表元素个数小于数组长度时,剩余空位会自动补\0。
我想知道字符数组用参数列表初始化时,如果列表元素个数小于数组长度,有没有必要在字符串结尾加'\0',例如char a[10]={'1','\0'}(vc++6.0会用0xCC填充未初始化的变量,但是如果用了初始化参数列表就会自动补\0。有没有编译器在数组初始化参数列表个数不足时剩余元素不填充\0?)

#include<stdio.h>
int main(){
    int i=0;
    char a[10]={'1'};//char a[10]={'1','\0'};
    printf("%s",a);
    return 0;
}