初始化变量列表中的赋值顺序是否未定义
Is the order of assignment in a list of initialized variables undefined?
可能重复:
变量列表中的逗号是序列点吗?
如果我有以下代码,逗号是作为正常的序列点,还是行为未定义?
int i = 1, j = i;
我实际上并不打算使用这个(我们的内部标准甚至禁止int i, j
),但我很好奇,在谷歌上搜索它变得异常棘手
它定义明确:
8.声明人:[dcl.dell]
3)声明中的每个init声明符都被单独分析,就好像它本身在声明中一样。
注意:
90)具有多个声明符的声明通常等价于相应的声明序列,每个声明都有一个声明人。那是
T D1, D2, ... Dn;
通常相当于
T D1; T D2; ... T Dn;
其中T是decl说明符seq,并且每个Di是init声明符。
完整性(因为注释上写着通常):
当一个声明符引入名称时发生异常隐藏dcl说明符使用的类型名,以便dcl说明符用于后续声明中,它们没有含义相同,如
struct S { ... }; S S, T;
//声明两个结构体S的实例which is not equivalent to
结构体S{…};SSS T;//错误`
相关文章:
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- 构造函数中初始化列表的计算顺序是否固定?
- C++中的类私有成员的内存顺序是否得到保证?
- 修改顺序是否有助于发生在关系之前
- 初始化变量列表中的赋值顺序是否未定义
- 与总顺序相比,部分顺序是否足以构建堆
- c++:多态性+多重继承顺序.继承顺序是否重要
- 执行pclint时,include文件的顺序是否重要
- 同一类模板参数的不同顺序是否会生成不同的类
- 更改专用化"template<...>"行中模板参数的顺序是否会导致定义重复或歧义?
- 定义向量元素的破坏顺序是否合理
- 在排序时更改排序顺序是否是未定义的行为
- 类中方法声明的顺序是否对编译器很重要
- 构造函数初始化列表中使用的变量的顺序是否重要
- 导入.so时,导入语句的顺序是否重要
- 多个va_end调用的顺序是否重要
- std::set迭代顺序是否始终根据C++规范升序
- 在给定的翻译单元中,文件级静态变量的顺序是否始终相同
- 通过std::map的迭代顺序是否已知(并由标准保证)