c语言中逗号运算符和逗号表达式

C语言 逗号运算(,)及其表达式 C语言提供一种用逗号运算符","连接起来的式子,称为逗号表达式。逗号运算符又称顺序求值运算符。 1.一般形式 表达式1, 表达式2, ……, 表达式n 2.求解过程 自左至右,依次计算各表达式的值,“表达式n” 的值即为整个逗号表达式的值。 例如,逗号表达式"a = 3 * 5, a * 4"的值=60:先求解a = 3 * 5,得a=15;再求a * 4 = 60,所以逗号表达式的值=60。 阅读详情

作者: Leo Chin
本博客文章,大多系网络中收集,转载请注明出处


C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:


  3+5,6+8

称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为

         表达式1,表达式2

逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式
  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。
  一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=3*5,a*4),a+5 先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为20。
  逗号表达式的一般形式可以扩展为

    表达式1,表达式2,表达式3……表达式n

它的值为表达式n的值。

  逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的:

  ① x=(a=3,6*3)
  ② x=a=3,6*a

  第①个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。第②个是逗号表达式,它包括一个赋值表达式和一个算术表达式,x的值为3。

  其实,逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中.

  请注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如

  printf("%d,%d,%d",a,b,c);

  上一行中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。
如果改写为

  printf("%d,%d,%d",(a,b,c),b,c);

则“(a,b,c)”是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符。括弧中的内容是一个整体,作为printf函数的一个参数。
C语言表达能力强,其中一个重要方面就在于它的表达式类型丰富,运算符功能强,因而c使用灵活,适应性强
第18节 逗号运算符及表达式 一.逗号运算符 逗号表达式:表达式1,表达式2,表达式3,… 求解规则:顺序求解,结果为最后一个表达式的值 a=3*5,a*4 /表达式的值为60,a为15 (a=3*5,a*4),a+5 /表达式的值为20,a为15 x=(a=3,6*3) /a为3,x为18,表达式值为18 x=a=3,6*a /x和a为3,表达式值为18 二.逗号表达式举例 1.交换两值时可用 #include <stdio.h> int main() { int a, b, t; 阅读详情

相关推荐

逗号表达式

案例一: #include "stdio.h" void main() { int x,y,z; x=1,y=1; z=x++,y++,++y; //逗号表达式 printf("%d,%d,%d\n",x,y,z); } 你觉得这个z值是多少呢? 分析:这个x++, y++, ++y 这是个逗号表达式,运算顺序自左至右,那有人要说了,简单,z = 2, 那我可要告诉你:错误;为啥错了?因为本例中z=x++含有赋值运算符,其优先级高于逗号逗号运算符,也即相当于这样 (z=x++),y++,++y

十三阿哥的博客 8037

C语言——逗号表达式

一、基本知识 百度百科:“逗号表达式,是C语言中的逗号运算符,优先级别最低,它将两个及其以上的式子连接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。” 总结基本规则: ①逗号表达将两个及其以上的式子连接为一个表达式。 ②逗号表达式按照从左向右的顺序计算每个子表达式的值 ③逗号表达式的最后一个子表达式必须有返回值,因为整个表达式的值是最后一个子表达式的值。其余子表达式可以没有返回值。 二、示例演示 1.示例一 int main() { int a = (1 * 2, 2 * 3, 3 *

yi_chengyu的博客 2万+

开源项目 ruoyi-sso-oauth2(一)环境配置

Ruoyi若依实现单点登录SSO、oauth2认证

Xiaoweidumpb 9683

【c】c语言中逗号运算符和逗号表达式

 刚开始学习C语言时,对逗号去处符和逗号表达式非常困惑,本文给了我很大的帮助。来自:百度空间-软件工程师  C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:  3+5,6+8称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为         表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表

程序人生 1万+

Android Qcom USB Driver学习(十三)

该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) Android Qcom USB Driver学习(八) Android Qcom USB Driver学习(九)deals with the USB Power Delivery resources used by one or more ports on the basis of the local device policy the basis of the local device policy.opera

Android驱动开发 2611

QMT量化交易桥接方案深度对比:从MiniQMT淘汰说起

量化交易系统中的API桥接,本质是解决本地终端与底层交易引擎之间的通信瓶颈。其核心原理在于绕过GUI封装、直连确定性执行层,从而获得低延迟、高可靠、可监控的指令通路。技术价值体现在策略实盘一致性提升、毫秒级响应保障及运维可控性增强。典型应用场景包括打板策略、T+0套利、高频网格等对时效与稳定性双敏感的自动化交易。本文聚焦国金证券QMT专业版生态,系统剖析DLL注入、HTTP反向代理、IPC共享内存与官方HTTP API四大桥接路径的性能边界、合规风险与工程落地成本,尤其深入解析qmt终端 client is

weixin_33892359的博客 457

C语言逗号运算符和逗号表达式

C语言逗号运算符和逗号表达式C语言逗号运算符和逗号表达式y = (x = a + b), (b + c)结果奇怪 C语言逗号运算符和逗号表达式 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接 其一般形式为: 表达式 1,表达式 2 1+1,2+2 其求值过程是分别求两个表达式的值,并以表达式 2 的值作为整个逗号表达式的值。 main(){ int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c); printf("y=%d,x=%d",y,x);

咸鱼菌 9262

sqoop抽取mysql的数据到hive表里面,字段内容被自动截取,导致字段不全的问题解决

今天央视重新转播NBA,写篇博客纪念一下这个重要的日子,湖人的表现就呵呵了!!!! 强行转到博客的主题来 mysql的字段属性:该字段能存下的值比如:“山东” `province` varchar(3) NOT NULL COMMENT '省份' 用sqoop sqoop import --connect "jdbc:mysql://xxxxxx:3306/xxxxxx?tinyInt1isBit=false&zeroDateTimeBehavior=convertToNull..

放肆桀骜 963

C语言--逗号运算符及逗号表达式

逗号运算符及表达式 C语言中","也是一种运算符,称为逗号运算符。其功能是将两个或多个表达式连接起来组成一个表达式。具体形式如下: 表达式1,表达式2,表达式3,...,表达式n 举个例子: 如:y=(x=a+b),c+d; 本例中,y是整个表达式的值,也就是表达式2的值,x是第一个表达式的值。对于逗号表达式: 逗号表达式一般形式中的表达式1,和表达式2也可以是逗号表达式的值。 将其...

wit_732的博客 7202

​基于stm32的智能空气加湿器设计(含源代码和Proteus仿真)

课程设计分享

LoongSTUDIO的博客 2927

CAN接受和发送失败的原因有哪些---之前调试MCP2515驱动时,数据一直发不出去,三个发送邮箱都被占满.至今未解决,读寄存器-总线错误

0.CAN总线错误分析与解决–讲的最精辟的放在最前面 我们知道CAN总线上的每个节点往总线上发送数据的同时会同时读取总线上的数据,并与自己发送的数据作对比。—CAN仲裁??? CAN总线错误分别有发送和接收错误计数,计数达到一定的累计以后就会产生CAN BUS OFF, 这说明CAN总线上出现了严重的错误。如下图CAN总线产生错误后的状态转换机制 如果出现了BUS OFF,总线上的节点需要做一些动作,例如重启CAN控制器或是重新上电,但是这些都只是一些补救措施,最根本的还是需要找到引起BUS OFF的根源

dianqicyuyan的博客 2万+

c语言等号 逗号,C语言逗号运算符和逗号表达式

在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。其一般形式为:表达式1,表达式2其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。【例】main() {int a=2,b=4,c=6,x,y;y=(x=a+b),(b+c);printf("y=%d,x=%d",y,x);}本例中,y等于整个逗号表达式的值,...

weixin_39622289的博客 1250

Android Telephony主要模块及功能

Telephony的代码主要由五个模块组成 1.Telephony Frameworks 代码区域: frameworks/opt/telephony/ 其中主要的文件在如下目录 /frameworks/opt/telephony/src/java/com/android/internal/telephony/ 其中比较常见的有以下几类文件 1.BaseCommands、RIL构成R

泊客 7721

C语言中的逗号的作用,C语言逗号运算符和逗号表达式基础总结

逗号运算符的作用:1,起分隔符的作用:定义变量用于分隔变量:int a,b输入或输出时用于分隔输出表列 printf("%d%d",a,b)2,用于逗号表达式的顺序运算符语法:表达式1,表达式2,...,表达式n表达式的值:表达式n的值优先级:最低运算顺序:左->右例题总结错题1if(a>b, a>c) max=a;else max=0;t=...

weixin_39606911的博客 4463

Android 13.0 framework默认沉浸式导航栏功能实现

​ 在13.0的系统rom定制化开发中,在实现导航栏的某些定制化开发中,在某些产品需要实现沉浸式导航栏,就是需要app 能全屏显示同样也能显示导航栏,接下来就来分析下相关的功能实现 ​

安卓兼职framework和app工程师的博客 467

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C语言中逗号运算符和逗号表达式!

C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:   3+5,6+8 称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为          表达式1,表达式2 逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式   a=3*5,a*4 对此表...

HUYA69的博客 1977

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C语言中逗号运算符和逗号表达式

C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:   3+5,6+8 称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为          表达式1,表达式2 逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式   a=3*5,a*4 对此表达式的求解,...

Zebra的博客 450

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: while(scanf("%d",&n)!=EOF)
下一篇: C++中值传递、指针传递、引用传递的总结
塔斯丁苟
博客等级 码龄15年 6粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值