关于C#:为什么{0}分配有效,但对于数组不是{5}


Why {0} assignation works but not {5} for an array

本问题已经有最佳答案,请猛点这里访问。

我尝试了以下代码:

1
2
3
4
5
int a[4] = {0};
int b[4] = {5};
int c[4];
printf("%d %d %d %d %d %d
"
, a[0], a[3] , b[0], b[3], c[0], c[3]);

得到以下结果:

1
0 0 5 0 random random

虽然我知道为什么我得到了c数组的随机值,但我不明白为什么赋值{5}不能用作{0}并且只初始化数组的第一个元素。

是否有方法将数组b元素初始化为与0不同的相同值?(不使用memset或for循环)


我misleading int a[4] = {0};冰。它不均"两个0initialize全元素",它的意思是"第一个元素的初始化和0残其默认值",然后和残冰initialized两0,resulting在全零。

likewise int b[4] = {5};初始化第一元件和两个50残,所以你得到5 0 0 0

我说:"这个文件

All array elements that are not initialized explicitly are initialized
implicitly the same way as objects that have static storage duration.

char和隐式初始化的集合,这是他们0


当安数组初始值设定项有fewer比数组元素的初始化式,这是应用在给定阶和任何剩余的两个元素的数组是initialized 0。所以在你看得到的两个案例b[0]5和0。看到两个残基。

它"似乎"工作的案例,因为0值是一样的违约。