逗号运算符和逗号表达式

逗号运算符和逗号表达式
逗号运算符
逗号运算符是以逗号为分隔符的列表中最后一个表达式的值。 
本质上讲,逗号的作用是导致一系列运算都被顺序执行。

最右边的那个表达式的值将作为整个逗号表达式的值,其他的表达式的值将会被丢弃。

逗号运算符是所有运算符中级别最低的。

例如,有如下表达式:

var = (count = 19, incr = 10, count + 1);
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;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
当上面的代码被编译和执行时,其结果为:

1010
1
逗号表达式
逗号表达式是一种特殊的运算符,它可以将两个表达式连接起来。 
如: 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
1
它的值为表达式n的值。
--------------------- 
作者:ycwang522 
来源:CSDN 
原文:https://blog.csdn.net/wyc12306/article/details/68942655 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值