RDE*_*RDE 3 c arrays swap integer
a[]的内容是什么?
int a[ ] = {4 , 9, 1, 8, [0]=5, 7};
Run Code Online (Sandbox Code Playgroud)
我尝试用以下方法打印它:
int main () {
int a[ ] = {4 , 9, 1, 8, [0]=5, 7};
for(int i = 0; i < 10; i++) {
printf("%d\n", a[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果:
5
7
1
8
-1558310176
712
Run Code Online (Sandbox Code Playgroud)
虽然可用的答案选择是:
a) 5, 9, 1, 8, 7
b) 4, 9, 1, 8, 5, 7
c) 5, 4, 9, 1, 8, 7
d) 4, 9, 1, 8, 7
e) 4, 9, 1, 8, 0, 5, 7
Run Code Online (Sandbox Code Playgroud)
当为聚合类型(即数组、结构体或联合)指定初始值设定项时,将按顺序应用子对象的初始值设定项。
给定这个初始值设定项:
int a[ ] = {4 , 9, 1, 8, [0]=5, 7};
Run Code Online (Sandbox Code Playgroud)
数组元素 0 - 3 首先分别用值 4、9、1、8 进行初始化。然后指定的初始化器[0]=5将数组元素 0 初始化为 5,覆盖之前的初始化 4。这使得当前子对象元素为 0,因此下一个初始化器适用于之后的下一个对象,即索引 1。然后导致索引 1 为使用值 7 进行初始化,覆盖之前的初始化值 9。
因此,上面的初始化程序创建了一个由int4 个元素组成的数组,并用值 5、7、1、8 进行初始化。
另外,假设您在数组仅包含 4 个元素时打印 10 个元素,则在尝试读取超出数组末尾的内容时会调用未定义的行为。