标签: c++ expression language-lawyer
编辑:抱歉发布重复和这样一个基本问题!我认为它比实际上更棘手,并且未能在我的原始搜索中发现引用的文章。
对于那里的语言标准专家来说,表达式的价值如下:
(a=1, b=2, c=3)
...定义?从我的测试来看,似乎所有编译器都将此表达式评估为3(GCC,MSVC,Clang)。
3
但是,我不确定我们是否应该依靠这种行为。我无意编写这样的代码,但遇到了一些模糊的代码,这些代码依赖于这种行为,在条件中有多个赋值,并且想知道它是否定义良好。
答案 0 :(得分:2)
如果a,b和c都已定义,那么您使用的是comma operator,它会返回c = 3的值,是3。
a
b
c
c = 3
所以回答你的问题,是的,它的定义很明确。