gpt4 book ai didi

c - 通过同时使用 "Element-by-Element"和 "Designated"技术初始化数组时出现意外输出

转载 作者:行者123 更新时间:2023-12-04 02:52:33 24 4
gpt4 key购买 nike

C99 提供了使用element-by-elementdesignated 来初始化数组的特性方法一起为:

int a[] = {2,1,[3] = 5,[5] = 9,6,[8] = 4};

关于运行代码:

#include <stdio.h>

int main()
{
int a[] = {2,1,[3] = 5,[0] = 9,4,[6] = 25};
for(int i = 0; i < sizeof(a)/sizeof(a[0]); i++)
printf("%d ",a[i]);

return 0;
}

(请注意元素 0 被初始化为 2,然后由指示符 [0] 再次初始化到 9)我期待 element 0(即 2)将被替换为 9(作为指示符 [0] = 9)因此 o/p 将变为

   9    1   0   5   4   0   25

不幸的是我错了,因为 o/p 来了;

   9    4   0   5   0   0   25

对意外的 o/p 有什么解释吗?

最佳答案

将指定初始化器与元素初始化器结合使用意味着基于指定初始化器的位置。

所以如果你要这样做:

int a[] = {2, 1, [3] = 5, 6};

结果应该是:

2 1 0 5 6

不是:

2 1 0 6

请注意,6 在初始值设定项中占据位置 3,但其结果位置由前面指定的初始值设定项(使用位置 3)隐含。指定初始化程序使用的位置之后的位置是 4,因此这就是放置 6 的位置。

关于c - 通过同时使用 "Element-by-Element"和 "Designated"技术初始化数组时出现意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17384561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com