详解逗号表达式

简介: 详解逗号表达式

1.什么叫做逗号表达式

 逗号表达式(comma expression)是 C 语言中的一种运算符,它使用逗号将两个或多个表达式连接在一起形成一个新的表达式。(本质上还是一种运算)

格式:

(expression1, expression2, ..., expressionN)

expression都是C语言中常见的表达式

2.逗号表达式的执行

执行规则:从左至右依次执行expression,并将最后一个expression作为逗号表达式的结果

下面请看代码:

int main()
{
  int x, y;
  x = (5, 3, 9);//5,3可直接忽略,最后会将9赋给x;
  y = (x++, x + 2, x * 2);
  //等价于
  int x, y;
  x = 9;
  y = (x++, x + 2, x * 2);
  //y的最后结果为20
  //1.x++等价于x=x+1,所以这一步x变为10;
  //2.x+2 执行结果为12,但并没有进行赋值操作,所以x还是为10;
  //3.执行y=x*2;对于逗号表达式来说,只有最后一个子表达式才有赋值的操作
  return 0;
}
int main()
{
    int arr[] = { 1,2,(3,4),5 };
    printf("%d\n", sizeof(arr));//输出结果是16
    return 0;                   //(3,4)是逗号表达式,从左向右执行,等价于4
                                //也即等价于arr[]={1,2,4,5};
}

3.逗号表达式常见用法

  • 在一些特定的循环语句中,例如 for 循环体中的多条语句需要计算。
for (int i = 0, j = n - 1; i < j; ++i, --j)
//定义变量时一次定义了两个,使代码更加简洁紧凑
  • 定义函数或宏时
#define MAX(a,b) ((a)>(b) ? (a):(b))
int main()
{
  int a = 10;
  int b = 20;
  int c = MAX(a, b);
  return 0;
}
  • 多个计算过程需要放在一个表达式中,但是你只需要最后一个表达式的结果。例如 a++, b++, c++, d++ 这样的连续的自增操作,可以写成 (a++, b++, c++, d++) 这样的逗号表达式,既简洁又清晰。

4.总结

逗号表达式是C语言常见的一种运算符,使用得当会使得代码的效率大大提升,但也要注意逗号表达式不易理解的特点,避免造成不必要的麻烦

目录
相关文章
|
供应链 监控
解密ERP系统的采购与物料管理模块
解密ERP系统的采购与物料管理模块
811 8
|
SQL 分布式计算 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
536 0
|
存储 算法 搜索推荐
【算法基础】时间复杂度和空间复杂度
【算法基础】时间复杂度和空间复杂度
1075 0
|
Ubuntu Linux 开发工具
Linux超级强大的十六进制dump工具:XXD命令,我教你应该如何使用!
Linux超级强大的十六进制dump工具:XXD命令,我教你应该如何使用!
1347 0
|
8月前
|
存储 弹性计算 应用服务中间件
阿里云轻量应用服务器全解析:规格特性、场景适配与使用指南
在云计算领域,轻量应用服务器以 “简单易用、高性价比” 为核心优势,成为个人开发者与中小企业上云的首选。阿里云 2025 年升级的轻量应用服务器,全系标配 200Mbps 峰值带宽,覆盖通用型、多公网 IP 型、国际型、容量型四大实例类型,适配网站搭建、跨境电商、游戏加速等多元场景。本文结合官方文档与实测数据,从核心特性、规格参数、价格体系、场景适配及使用注意事项等维度展开解析,为用户提供客观选型参考。
|
9月前
|
SQL 架构师 关系型数据库
【Java架构师体系课 | MySQL篇】⑤ 索引优化实战一
本文深入解析MySQL索引优化原理,涵盖联合索引使用、覆盖索引、索引下推、filesort排序机制及trace工具分析执行计划选择等内容,并结合实际案例提供索引设计原则与SQL优化策略。
413 5
|
12月前
|
开发工具 git
解决git push时的错误提示:“error: src refspec master does not match any”
8 .如果确认以上都无误但依然出现该提示,则可能需要重新设置跟踪上游(upstream),通过如下命令:
4778 8
|
机器学习/深度学习 运维 资源调度
运维,不再“救火”!机器学习如何让故障预警成为现实?
运维,不再“救火”!机器学习如何让故障预警成为现实?
483 2
|
Shell Linux C语言
Linux0.11 execve函数(六)
Linux0.11 execve函数(六)
917 1
|
网络协议 搜索推荐 Linux
Minecraft配置文件参数说明(基岩版服务器篇)
server.properties 是 Minecraft Bedrock 服务器的核心配置文件,用于定义服务器的基本设置和运行规则。文件通常位于服务端根目录(Windows 示例路径:`C:\bedrock-server`;Linux 示例路径:`/opt/bedrock-server/` 或自定义路径)。根据需求调整参数,可实现个性化服务器配置。
1738 2