根据这个优先级表,逗号操作符是左结合的。即将a, b, c
解析为(a, b), c
。这是必须的吗?a, (b, c)
不会有完全相同的行为吗?
由于存在可重载的operator,
,所以不存在相同的行为。a, (b, c)
可以调用不同于(a, b), c
的重载
逗号操作符具有从左到右的结合性。用逗号分隔的两个表达式从左到右求值。总是对左操作数求值,并且在对右操作数求值之前完成所有副作用。
逗号可以在某些上下文中用作分隔符,例如函数参数列表。不要混淆逗号作为分隔符和作为操作符的用法;这两种用法完全不同。
http://msdn.microsoft.com/en-us/library/zs06xbxh.aspx