C语言数组中未初始化元素的值

Ngo Thanh Nhan

我有3个元素的数组。但是我只想初始化其中的2个。我让第三个元素为空白。

unsigned char array[3] = {1,2,};
int main(){
  printf("%d",array[2]);
    return 0;
}

打印结果为0。我在IAR和一些在线编译器上对其进行了测试。

第三个元素的值是否有C规则?是否有任何编译器用0xFF填充第三个元素?(特别是交叉编译器)

丢失

是的,C标准确实定义了在这种情况下会发生什么。因此,0xFF在这种情况下,不应该使用任何符合C标准的编译器

该标准的第6.7.9节说:

初始化

...

10 ...如果未明确初始化具有静态或线程存储持续时间的对象,则:

  • 如果具有指针类型,则将其初始化为空指针;
  • 如果具有算术类型,则将其初始化为(正数或无符号)零;
  • 如果是聚合,则根据这些规则(递归)初始化每个成员,并将任何填充初始化为零位;
  • 如果是联合,则根据这些规则(递归地)初始化第一个命名成员,并将任何填充初始化为零位;

...

21如果用大括号括起来的列表中的初始化程序少于聚合中的元素或成员,或者用于初始化已知大小的数组的字符串文字中的字符少于该数组中的元素,则聚合的其余部分应该与具有静态存储持续时间的对象隐式初始化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用for循环初始化数组,并使用最终数组元素的值作为条件(在C中)

来自分类Dev

在C中,未初始化的数组中char的默认值是什么?

来自分类Dev

在C中,未初始化的布尔数组的默认值是什么?

来自分类Dev

C ++中的动态数组-条件跳转或移动取决于未初始化的值

来自分类Dev

在C中初始化未签名的char数组

来自分类Dev

如何从C中的结构数组初始化单个元素?

来自分类Dev

C ++中未初始化变量的值

来自分类Dev

未初始化的 int 数组里面有什么?(C语言)

来自分类Dev

C++ 未初始化的局部(非全局)int 数组中的元素类型究竟是什么?

来自分类Dev

C ++初始化数组浪费值

来自分类Dev

C中未初始化的枚举

来自分类Dev

未初始化数组中的最小值和最大值

来自分类Dev

C语言中的常量整数和数组初始化

来自分类Dev

c语言中数组初始化的困惑

来自分类Dev

在一行中初始化C中的所有变量和未初始化的值

来自分类Dev

如何在C语言库中初始化数组大小?

来自分类Dev

C语言中的初始化数组中的“ movq”和“ movw”是什么意思?

来自分类Dev

在 C 中初始化 ** 数组

来自分类Dev

在 c 中初始化动态数组

来自分类Dev

在C中初始化char数组

来自分类Dev

数组在C ++中初始化

来自分类Dev

在C中初始化结构数组

来自分类Dev

C中的字符数组初始化

来自分类Dev

在C中初始化指针数组

来自分类Dev

在C中初始化动态数组

来自分类Dev

C中的布尔数组初始化

来自分类Dev

在C ++中初始化对数组

来自分类Dev

在C ++中初始化指针数组

来自分类Dev

C ++中的多维数组初始化