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

时间:2015-05-08 23:20:07

标签: c++ expression language-lawyer

编辑:抱歉发布重复和这样一个基本问题!我认为它比实际上更棘手,并且未能在我的原始搜索中发现引用的文章。

对于那里的语言标准专家来说,表达式的价值如下:

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

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

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

1 个答案:

答案 0 :(得分:2)

如果abc都已定义,那么您使用的是comma operator,它会返回c = 3的值,是3

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