在linux中我使用gcc进行编译,定义数组时,如下所示 int a[5] = {10, a[9] =5};

打印出来时结果a[0]=10,a[1]=5........a[9]=5.那问题是,a[1]的数值应该是等于0的,为什么直接等于5?我使用ubuntu16.04版本,谢谢各位大神回答。
最新回答
封锁那段记忆

2025-02-24 10:17:38

初始化按照初始化表中的值的顺序依次给数组每个元素赋值。因此,a0赋值为10,a[1]赋值为表达式(a[9]=5)的结果。赋值号的返回值为左值的引用,因此先将a[9]赋值为5,然后返回a[9]的引用对a[1]赋值,因此a[1]=a[9]=5。a[2]~a[8]处于未赋值状态。
追问
如果在定义里,我想在a[9]=5不移动的情况下,不赋值给a[1](就是让a[1处于未赋值的状态])的做法是?
追答
那你只能单独用语句赋值,不能用初值表赋值。
追问
假设我有很多的数值,那这个方法不就不可取?
追答
如果要初始化一个很大的数组,可以在别处维护一张初值表或者采用文件的方式读入。