考虑以下使用默认值初始化数组的示例:
static unsigned int array[10] = { [ 0 ... 9 ] = 5 };
这个运算符到底是做什么的?
与可变参数宏__VA_ARGS__
有关吗?
最佳答案
在标准 C 中,从 C99 开始,指定的初始化器允许以以下形式初始化数组的各个元素:
int array[4] = {[1] = 42};
你偶然发现的语法是一个范围初始化器,它是一个 GNU 扩展,用于将 0
和 9
之间的所有元素初始化为给定值,因此严格等同于:
static unsigned int array[10] = { [0] = 5, [1] = 5, [2] = 5, [3] = 5, [4] = 5, [5] = 5, [6] = 5, [7] = 5, [8] = 5, [9] = 5};
只是减轻了打字和阅读的负担。
关于c - 三点运算符 "..."用于初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56598905/