一.简介

c语言提供一种特殊的运算符,逗号运算符,优先级别最低,将两式联接起来。
例1:(1+2,3+4)称为逗号表达式,其求解过程先表达式1(1+2),后表达式2(3+4),整个表达式值是表达式2的值,结果是7。
例2:(a = 12, a3)的结果是6,a为2。
赋值运算优先级高于逗号表达式

逗号表达式的要领:

  1. 从左到右逐个计算;
  2. 它的值为最后一个表达式的值;
  3. 逗号表达式的优先级别在所有运算符中最低。

二.题目类型

1.求实参个数

题目:func(rec1,rec2+rec3,(rec4,rec5));
该函数调用语句中,含有的实参个数是
A)3  B)4 C)5 D)有语法错误

答案:A
分析:c语言规定,函数调用时实参与实参之间是用逗号隔开的,所以,本题的函数调用语句中包含3个实参,第一个实参是rec1,第二个实参是rec2+rec3,第三个实参是(rec4,rec5),这里的第三个实参就是一个逗号表达式,根据逗号表达式的运算规则,第三个实参的值应该等于rec5的值。

2.求值
题目:(a = 3,b = 5,b+ = a,c = b* 5),求逗号表达式的值?

答案:40。
分析:前两个表达式只是赋值,从第三个开始计算,b+=a,即b=5+3,b=8。最后一个表达式,c=b5=85=40。因为逗号表达式的值是最后一个表达式的值,所以整个逗号表达式的值为40。
其他各变量最后的值依次为:a=3,b=8,c=40。