C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 执行数组动态初始化时的操作顺序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我浏览了dcl.init.aggr部分并找不到明确的答案.

虑:

static int x[2] = { f(),g() };

标准是否说首先被初始化:x [0]或x [1]?

换句话说,哪个函数首先运行:f()或g()?

解决方法

以下是回答您问题的标准的一些相关摘录:

8.5.1 / 2“当初始化列表初始化聚合时,如8.5.4中所述,初始化列表的元素被视为聚合成员的初始化者,增加下标或成员顺序.”

8.5.4 / 4“在braced-init-list的initializer-list中,初始化子句,包括包扩展(14.5.3)产生的任何结果,按照它们出现的顺序进行评估.在与初始化列表的逗号分隔列表中的任何初始化子句相关联的每个值计算和副作用之前,对与给定初始化子句相关联的每个值计算和副作用进行排序.[注意:无论初始化的语义如何,此评估顺序都保持不变;例如,当initializer-list的元素被解释为构造函数调用的参数时,它适用,即使通常对调用的参数没有排序约束. – 尾注]

大佬总结

以上是大佬教程为你收集整理的c – 执行数组动态初始化时的操作顺序全部内容,希望文章能够帮你解决c – 执行数组动态初始化时的操作顺序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。