Sequential-Evaluation 运算符

顺序计算运算符(也称为“逗号运算符”)按顺序从左到右计算其两个作数。

语法

expression:
assignment-expression
expression , assignment-expression

顺序计算运算符 (,) 的左作数作为 void 表达式进行计算。 作的结果的值和类型与右作数相同。 每个作数可以是任何类型的。 顺序计算运算符在其作数之间不执行类型转换,也不会生成 l 值。 第一个作数之后有一个序列点,这意味着左作数计算的所有副作用在开始计算右作数之前完成。 有关详细信息,请参阅 序列点

顺序计算运算符通常用于在只允许一个表达式的上下文中计算两个或多个表达式。

逗号可用作某些上下文中的分隔符。 但是,必须小心不要将逗号作为分隔符的使用与用作运算符的分隔符混淆;这两种用法是不同的。

示例:

此示例演示顺序计算运算符:

for ( i = j = 1; i + j < 20; i += i, j-- );

在此示例中,独立计算语句的第三个表达式的每个作数 for 。 首先计算左作数 i += i ;然后计算右作数 j--

func_one( x, y + 2, z );
func_two( (x--, y + 2), z );

在函数调用 func_one中,传递三个用逗号分隔的参数: xy + 2z。 在函数调用 func_two中,括号强制编译器将第一个逗号解释为顺序计算运算符。 此函数调用将两个参数传递给 func_two。 第一个参数是顺序计算运算的结果,该运算 (x--, y + 2)具有表达式 y + 2的值和类型;第二个参数是 z

另请参阅

逗号运算符: