vscode 逗号不换行_C语言补漏-逗号运算符与逗号表达式 - mohist

1. 新名词?

今天看到一个新名词: 逗号表达式。 C语言就有。额,怎么当时学习C没见过,一头雾水。 对我来说是新名词,其实它早就存在了,只是我还不知道。

2. 逗号表达式

C语言提供了逗号运算符----一种特殊的运算符。 形如:

表达式1,表达式2

这里,其将两个表达式连接起来,类似这样的表达式被称为逗号表达式, 比如: a+b, 3+3。

3. 解析过程

形式: 表达式1,表达式2计算表达式1的结果,计算表达式2的结果。既然整体是逗号表达式,他肯定有个结果,那么他的结果是表达式2,与表达式1的结果无关。例如:

int a = 1;      // (1)
a = (a = 2 * 5, a * 4);       // (2)
std::cout << "a = " << a << std::endl;      // (3)

首先(1)中,a=1, (2)中,(a = 2 * 5, a * 4)是一个逗号表达式,(2)整体是一个赋值表达式。(2)的计算过程:先计算 a=2*5, 再将10(2*5)赋值给a, 此时,a = 10, 最后计算表达式2 a * 4的结果,a = 10, a * 4 = 40。逗号表达式的结果为40,最终将40赋值给a,a最终等于40.dc8262e405d7ab55518edd9651839256.png

4.优先级

逗号运算符是一种特殊的运算符,其优先级为最低。看下面的例子:

例A

a = (a = 2 * 5, a * 4);

例B

a = 2 * 5, a * 4;

例A与例B的区别是,例A是一个赋值表达式,例子B是一个逗号表达式。

5.扩展

扩展形式: 表达式1,表达式2,表达式3......表达式X
整体计算结果为最后一个表达式X的值。
一个例子

int a = 1;
a = (a = 2 * 5, a * 4, a + 1, a + 2, a + 3);
cout << "a = " << a << endl;

按照规则,整体是一个赋值表达式,其中,=右边的逗号表达式的最终结果为 a+3,而a = 2 * 5 = 10, 所以,赋值表达式计算结果: a = 1363b83e44aa3f3cdd9aefabb02f39131c.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值