gpt4 book ai didi

C [x ... y] 范围赋值

转载 作者:太空狗 更新时间:2023-10-29 16:44:44 26 4
gpt4 key购买 nike

我今天遇到了一些代码,这些代码使用了我多年来从事 C 编程时从未见过的语法。

MWE:

#include<stdio.h>

char *example_array[] = {
[0 ... 5] = "hello world",
[6 ... 10] = "goodbye world"
};

int main(void) {
printf("%s, %s.\n", example_array[3], example_array[7]);
return 0;
}

预期输出:

hello world, goodbye world.

很清楚静态上下文中发生了什么,但我很好奇这是否可以用作非静态快捷方式中的方便快捷方式,例如循环中的赋值。当然,它不会提供 -funroll-loops 无法提供的任何性能提升,但它可能会使代码更清晰,例如,矩阵行分配或其他。

默认情况下,

clanggcc 在使用此语法时不会发出警告,但我从未在任何地方看到它的文档。这是某种扩展,还是标准的 C 语法?

最佳答案

这是 gcc 和 clang 都支持的指定初始化器的 GNU 扩展,您可以阅读 in the gcc docs .请注意,这仅适用于初始化器,不适用于赋值,尽管两者都使用 = 符号,但它们是非常不同的东西。

关于C [x ... y] 范围赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51904543/

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