Why the difference between int a[5] = {0} and int a[5]={1} (Missing Feature)
When we initialize an array like this `int a[5] = {0}`, the compiler makes all 5 elements 0. That is really good, compact-initialization and useful feature. 

But I wonder why the compiler doesn't initialize `int a[5]={1}` similarly? Why does it not make all 5 elements 1? Why the Standard doesn't mandate it? Would it not been an awesome feature? Isn't it missing?

Also, if the number of elements in the initializer is less than the size of the array, then the compile could initialize the remaining elements with the last element in the initializer. Means, `int a[5]={1,2,3}` is equivalent to `int a[5]={1,2,3,3,3}`. And similarly, `int a[10]={1,2,3,0}` is equivalent to `int a[10]={1,2,3,0,0,0,0,0,0,0};`.

Would it all not be an awesome feature if the Standard mandates it? Or is there any good reasons for this missing feature?
Why the difference between int a[5] = {0} and int a[5]={1} (Missing Feature)
===

When we initialize an array like this `int a[5] = {0}`, the compiler makes all 5 elements 0. That is really good, compact-initialization and useful feature. 

But I wonder why the compiler doesn't initialize `int a[5]={1}` similarly? Why does it not make all 5 elements 1? Why the Standard doesn't mandate it? Would it not been an awesome feature? Isn't it missing?

Also, if the number of elements in the initializer is less than the size of the array, then the compile could initialize the remaining elements with the last element in the initializer. Means, `int a[5]={1,2,3}` is equivalent to `int a[5]={1,2,3,3,3}`. And similarly, `int a[10]={1,2,3,0}` is equivalent to `int a[10]={1,2,3,0,0,0,0,0,0,0};`.

Would it all not be an awesome feature if the Standard mandates it? Or is there any good reasons for this missing feature?