逗号表达式
date: 2016-06-07 10:36:15
categories: C++
tags:
- C
- C++
- C++小结
逗号运算符和逗号表达式
逗号运算符
逗号运算符是以逗号为分隔符的列表中最后一个表达式的值。
本质上讲,逗号的作用是导致一系列运算都被顺序执行。
最右边的那个表达式的值将作为整个逗号表达式的值,其他的表达式的值将会被丢弃。
逗号运算符是所有运算符中级别最低的。
例如,有如下表达式:
var = (count = 19, incr = 10, count + 1);
上式在计算时,首先将count的值赋给19,将10赋值给incr,然后在最后一个表达式中,将最右边的count+1的计算结果20赋给var。
上面表达式中的括号是必须得,因为逗号运算符的优先级低于赋值操作符。
例如,有如下例子:
#include<iOStream>
using std::cout;
int main()
{
int i, j;
j = 10;
i = (j ++, j + 100, 999 + j);
cout << i;
return 0;
}
当上面的代码被编译和执行时,其结果为:
1010
逗号表达式
逗号表达式是一种特殊的运算符,它可以将两个表达式连接起来。
如: 3 + 5,6 + 8
这种类型的运算符成为逗号表达式,又称为“顺序求值运算符”。
逗号表达式的一般形式是:
表达式1,表达式2
求解顺序是:先求解表达式1,再求解表达式2.整个逗号表达式的值时表达式2的值。
比如上式例子中表达式3 + 5,6 + 8
的值是14.
又如,逗号表达式
a = 3 * 5, a * 4
对该表达式,可能会有两种解读。
- 一种认为,等号右边的
3 * 5,a * 4
是一个逗号表达式,先求出此逗号表达式的值,在将逗号运算符的值赋给a。比如如果a的原值是3,则逗号表达式的值为12,将12赋值给a,因此最后a的值为12. - 另一种认为,
a = 3 * 5
是一个赋值表达式,a * 4
是另一个表达式,二者用逗号相连,构成一个逗号表达式。
这两种看法哪种正确呢?
其实,赋值运算符的优先级高于逗号运算符的优先级,因此应该首先求解a = 3 * 5
,此时a的值为15,然后再求解a*4
,得60.
整个逗号表达式的值为60.
因此,逗号表达式的一般形式可以扩展为:
表达式1,表达式2,表达式3,......表达式n
它的值为表达式n
的值。
参考文章
相关阅读
JS逗号表达式逗号表达式通常用在给变量复赋值或函数返回值时使用逗号表达式的一般形式是:表达式1,表达式2,表达式3……表达式n 逗号