多重赋值表达式 (a=123, b=456, c=789) 是否定义明确?

Is multiple assignment expression (a=123, b=456, c=789) well-defined?

编辑:对于发布重复问题和如此基本的问题深表歉意!我认为它比实际情况更棘手,并且未能在我的原始搜索中找到引用的文章。

对于那里的语言标准专家来说,表达式的值是这样的:

(a=1, b=2, c=3)

...定义?从我的测试来看,我们所有的编译器似乎都将此表达式计算为 3(GCC、MSVC、Clang)。

但是,我不确定我们是否应该依靠这种行为。我无意编写这样的代码,但遇到了一些晦涩难懂的代码,这些代码依赖于在条件中进行多次赋值的这种行为,并且想知道它是否定义良好。

如果 abc 都已定义,则您正在使用 comma operator,这将 return c = 3,也就是 3

所以回答你的问题,是的,它定义明确。