一.简介
c语言提供一种特殊的运算符,逗号运算符,优先级别最低,将两式联接起来。
例1:(1+2,3+4)称为逗号表达式,其求解过程先表达式1(1+2),后表达式2(3+4),整个表达式值是表达式2的值,结果是7。
例2:(a = 1 * 2, a * 3)的结果是6,a为2。
(赋值运算优先级高于逗号表达式)
逗号表达式的要领:
- 从左到右逐个计算;
- 它的值为最后一个表达式的值;
- 逗号表达式的优先级别在所有运算符中最低。
二.题目类型
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=b * 5=8 * 5=40。因为逗号表达式的值是最后一个表达式的值,所以整个逗号表达式的值为40。
其他各变量最后的值依次为:a=3,b=8,c=40。