gpt4 book ai didi

c++ - (C/C++)数组初始化可以引用自身吗?

转载 作者:IT老高 更新时间:2023-10-28 12:43:39 25 4
gpt4 key购买 nike

我想知道以下表单的初始化:

int  array[] = {
v - 1,
array[0] + 1
} ;

在第二个元素的初始化中,使用了第一个元素的值,但是整个数组还没有初始化。这恰好是用 g++ 编译的,但我不确定这是否实际上是可移植的和定义良好的构造?

最佳答案

参见 3.3.2 声明点:

The point of declaration for a name is immediately after its complete declarator (Clause 8) and before itsinitializer (if any), except as noted below. [ Example:

int x = 12;
{ int x = x; }

Here the second x is initialized with its own (indeterminate) value. —end example ]

所以你正确地引用了数组,它的名字在 = 之后是已知的。

然后,8.5.1 聚合:

An aggregate is an array or a class [...]

17: The full-expressions in an initializer-clause are evaluated in the order in which they appear.

但是,我看不到评估值何时实际写入数组的引用,因此我不会依赖它,甚至会声明您的代码定义不明确。

关于c++ - (C/C++)数组初始化可以引用自身吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9467868/

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