C/C++ 中的逗号运算符

在C语言中逗号运算符可以将两个表达式连接起来

int n = 3+5, 6+ 10;   // 此时 n = 16  ,    

称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为 表达式1, 表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5, 6+ 10”的值为16。


例子 : a=3*5,a*4, 注意重点 : 逗号运算符优先度最低,比赋值运算符低。
对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出此逗号表达式的值, 如果a的原值为3,则逗号表达式的值为12,将12赋给a, 因此最后a的值为12。另一种认为:“a=3*5”是一个赋值表达式”,“a*4”是另一个表达式,二者用逗号相连,构成一个逗号表达式。这两者哪一个对呢?
赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60

下面在将两个例子:

  1. x = (a = 3, 6 * 3);
  2. x = a = 3, 6 * a;
  1. 是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。
  2. 包括一个赋值表达式和一个算术表达式,x的值为3。

下面用一个程序看看

#include <iostream>

using namespace std;


int main(int argc, char** argv)
{
	int a = 1, b = 2, c = 3;

	cout << (a, b, c) << b << c << endl;  // 323
	// 逗号运算符 优先级最小
	int x = (a = 3, 6 * 3);
	cout << x << endl;   // 18
		 
	return 0;
}

在这里插入图片描述

另外附上我的github仓库:https://github.com/acelj/Notes
分享关于C++基础知识,智能指针,内存四区, 数据结构和算法,linux, mysql,redis等等。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值