逗号表达式与赋值表达式

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

        逗号表达式和赋值表达式是C语言中常用的表达式类型。它们可以用于各种目的,包括计算和评估表达式、初始化变量、为函数调用提供参数以及将值分配给变量。 

逗号表达式

        逗号表达式允许在单个语句中计算和评估多个表达式。逗号分隔每个表达式,并且表达式从左到右依次执行。逗号表达式可以用于以下目的:

  1.  将多个表达式组合为一个语句。
  2.  初始化多个变量。
  3.  为函数调用提供多个参数。
  4.  将值分配给多个变量。

逗号表达式运算法则

  •  逗号表达式从左到右依次执行。
  •  逗号表达式中,每个表达式都独立计算和评估。
  •  逗号表达式中,每个表达式的值都会被丢弃,除了最右边的表达式。
  •  逗号表达式的值是其最右边的表达式的值。

以下是一些逗号表达式运算法则的示例: 

int i = 1, j = 2, k = 3; // 初始化三个变量
printf("%d, %d, %d\n", i, j, k); // 输出三个变量的值


  逗号表达式中,每个表达式都独立计算和评估: 

int a = (1 + 2), b = (3 + 4), c = (5 + 6); // 计算三个表达式的值   a=3,b=7,c=11


  逗号表达式中,每个表达式的值都会被丢弃,除了最右边的表达式:

int d = (1, 2, 3); // 逗号表达式中,只有最右边的表达式 3 的值会被保留,d最终等于3


逗号表达式的值是其最右边的表达式的值: 

int e = (1, 2 + 3, 4 * 5); // e 的值是 20

练习:

求下面代码的结果 :

#include <stdio.h>
int main()
{
    int arr[] = {1,2,(3,4),5};
    printf("%d\n", sizeof(arr));
    return 0;
} 

答案:16

分析:(3,4)逗号表达式,从左往右计算,表达式最终结果是4。sizeof计算数组大小(sizeof:https://blog.youkuaiyun.com/wait___wait/article/details/135184125?spm=1001.2014.3001.5502),单位字节,int类型字节为4,数组有4个元素,因此大小为4*4=16。

赋值表达式

        赋值表达式用于将值分配给变量。赋值运算符“=”用于将右边的值分配给左边的变量(操作符:赋值运算符https://blog.youkuaiyun.com/wait___wait/article/details/135242898)。赋值表达式可以用于以下目的:

  • 将常量或变量的值分配给变量。
  •  将函数调用的返回值分配给变量。
  •  将表达式计算的结果分配给变量。

以下是一些赋值表达式的示例:

int i = 1; // 将值 1 赋值给变量 i
i += 2; // 将值 2 加到变量 i 上,  i等于3,i+=2相当于i=i+2,是复合赋值

易混淆点        

 举例说明:

#include <stdio.h>
int main()
{
    int a, b, c;
    a = 5;
    c = ++a;
    b = ++c, c++, ++a, a++;

    b += a++ + c;
    printf("a = %d b = %d c = %d\n:", a, b, c);
    return 0;
} 

答案:a = 9 b= 23 c = 8 

答案解析:

++运算符:分为前置++和后置++(https://blog.youkuaiyun.com/wait___wait/article/details/135242898)

前置++:先加1,后使用,即先使用变量中内容,然后给结果加1

后置++:先使用变量中内容,整个表达式结束时,给变量加1

 c = ++a;// ++a:a+1,结果为6,加完之后的结果用来赋值给c,因此:a = 6 c = 6

b = ++c, c++, ++a, a++;
   // 逗号表达式的优先级最低,要想先执行可利用(),这里先算b=++c, b得到的是++c后的结果,b是7
   // b=++c 和后边的构成逗号表达式,相当于   (b=++c),c++, ++a, a++    依次从左向右计算的。
   // 表达式结束时,c++和,++a,a++会给a+2,给c加1,此时c:8,a:8,b:7

 b += a++ + c; // a先和c加,结果为16,在加上b的值7,b的结果为23,最后给a加1,a的值为9 

 练习:

#include<stdio.h>
int main()
{
    int a, b;
    b = (a = 1,a + 1, ++a);
    printf("a = %d b = %d", a, b);
    return 0;
} 

 先自己分析一下

答案:a = 2 b = 2

解析: b = (a = 1,a + 1, ++a)先执行逗号表达式再执行赋值表达式,逗号表达式的最终结果是a等于2,后a的值赋给b。


期待

逗号表达式 案例一: #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 阅读详情

相关推荐

C语言逗号表达式的运算规则及示例代码

逗号表达式是C语言中的一种特殊表达式,它允许在一个表达式中使用多个逗号分隔的子表达式。逗号表达式的运算规则较为简单,它的结果是最后一个子表达式的值。可以看到,x、y和z的值都增加了1,而result的值为3,与逗号表达式的结果一致。逗号表达式的结果是最后一个子表达式的值。也就是说,整个逗号表达式的值取决于最后一个子表达式的值。逗号表达式的求值顺序是从左到右,每个子表达式都会按照顺序依次求值。由于逗号表达式的结果是最后一个子表达式的值,因此整个逗号表达式的值取决于。的值为3,因此整个逗号表达式的值也为3。

NoerrorCode的博客 2270

详解逗号表达式

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

Mylvzi的博客 6048

Unity游戏接入穿山甲广告SDK全攻略:从零到上线的避坑指南

本文为Unity开发者提供了接入穿山甲广告SDK的完整实战指南。详细解析了从账号注册、应用创建到Unity插件集成、安卓与iOS平台打包配置的全流程,并重点分享了广告加载失败、展示异常等常见问题的排查与解决方案,帮助开发者高效实现游戏广告变现。

weixin_29015899的博客 535

c语言赋值一个字母,c语言赋值后面有逗号 c语言赋值与逗号表达式问题

C语言提供一种特殊放入运算符:逗号运算符 表达式1,表达式2 逗号表达式的分享解过程是: 先分享表达式1,再分享表达式2 整个逗号表达式的值是表达式2的值,如表达式“3+5,6+8”的值为14。又如,逗号表达式“a=3*5,a*4”。c语言赋值与逗号表达式问题首先指正一下,逗号的优先级最低,低于赋值。楼上的说错了。。。 所以,第一个应该是6,6 第二个由于有括号,则是6。c语言逗号表达式 是不是所...

weixin_42405705的博客 2816

双翌视觉系统配合机械手大视野定位案例(单目标带角度抓取)

一、定位原理概述 1.系统构架 视觉定位系统采用正向打光方式,光源在机械手上方,CCD从上往下拍摄,进行图像分析定位。相机将计算出的像素坐标转换为机械手的物理坐标,视觉软件与机械手进行网口通讯,将视野内物料的物理坐标发送给机械手,机械手抓取物料放在指定工位。 2.相机标定概述 系统采用宫格标定确定像素坐标和物理坐标一一对应关系,同时利用3点或者多点旋转标定求出旋转中心 系统采用宫格标定,自定义行列数和间距及旋转角度,通过机械手发送的当...

weixin_51554164的博客 2171

Obsidian和Typora图片路径同步终极指南:告别混乱的assets文件夹

本文详细解析了Obsidian与Typora图片路径同步的终极解决方案,通过Custom Attachment Location插件实现动态路径管理,解决了两款工具间图片兼容性问题。文章提供了从基础配置到高级应用的完整指南,帮助用户告别混乱的assets文件夹,提升工作效率。

g9h0i1的博客 821

逗号表达式与赋值语句

逗号表达式的结果是逗号表达式中最后一个式子的值。 两种逗号表达式与赋值语句的区别,例如:a=b,c;这个式子的最后的结果a的值是b,因为此时因为逗号低于赋值运算,故b先赋值给a,然后再计算逗号表达式。a=(b,c);这个式子的最后结果a的值是c,因为先算括号内的此时逗号表达式的值为c,然后将c的值赋值给a. #include&lt;stdio.h&gt; int main(void) { ...

qq_40456669的博客 5517

ic后端学习笔记-floorplan

floorplan是布图规划,规划包括定义芯片的大小,定义芯片内各种模块、hard macros(硬核。比如RAM,ROM及其他IP模块等)、IO等的大小和位置,有时候还需要提前定义一些placement blockages,groups/regions等等,是后端设计的第一步,也是后续所有P&R工作的基础。floorplan与placement的区别是。

tfrofc的博客 5828

3 数据类型、运算符与表达式-3.9 赋值运算符和赋值表达式和3.10 逗号运算符和逗号表达式和3.11 小结

【代码】3 数据类型、运算符与表达式-3.9 赋值运算符和赋值表达式和3.10 逗号运算符和逗号表达式和3.11 小结。

qq_43071699的博客 345

别再只看读写速度了!聊聊手机闪存eMMC、UFS3.1和SSD背后的功耗与体积玄学

本文深入探讨手机闪存技术eMMC、UFS3.1和SSD在功耗与体积设计上的关键差异。通过对比接口技术、封装工艺和温度管理,揭示移动存储如何在有限空间内平衡性能与能效,为消费者提供选购参考。重点关注UFS3.1的差分信号设计和全双工架构带来的显著优势。

weixin_27061475的博客 444

10行代码搞定QMT实盘交易:手把手教你用Python自动化买卖股票(附完整源代码)

本文提供了一份详尽的QMT实盘交易教程,手把手教你使用Python构建自动化交易系统。内容涵盖环境配置、账户连接、查询与下单等核心代码,并附有完整的源代码示例,帮助开发者快速掌握从零到实盘的完整流程,实现安全可靠的股票自动化买卖。

weixin_29214335的博客 438

C语言核心运算详解:算术、赋值与逗号表达式

隐式转换遵循“低精度往高精度走”的潜规则,看似体贴,却可能在不经意间把 unsigned short 提升成 int,再和另一个 unsigned int 运算,最终引发符号扩展的灾难。尤其是 \ddd 与 \xhh 的八进制、十六进制写法,让我意识到字符世界其实是一张巨大的坐标图:只要给出正确的坐标(码值),就能召唤出任何想要的字形。学习完这一整套关于转义字符与各类运算的知识点,我的最大感受是:原来 C 语言里“看似简单的符号”背后,都藏着一整套极其严谨、环环相扣的设计哲学。左值,充当运算的结果值。

kkkkkingw的博客 564

YOLO11改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

YOLOv11改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

魔改工程师的博客 4504

python中正确的赋值语句_python自增自减?赋值语句返回值?逗号表达式?

咳咳,直接进入正题吧。自增自减(++/--),以及赋值语句,还有逗号表达式都是在C/C++中常见的运算符或表达式。熟悉C/C++的小伙伴们都知道,在C/C++中:自增自减(前缀/后缀)运算符将实现对变量值的 加1/减1; 类似 x = 0; ++x;的语句会使最终 x 的值为1赋值语句将所赋的值作为该语句的返回值(值传递); 类似 (x = func()) > 0; 的语句会将函数 func(...

weixin_39573512的博客 2751

搞定ESD(七):静电放电问题典型案例分析(二)

静电放电噪声耦合的方式主要是:传导耦合与辐射耦合,辐射耦合主要以磁场耦合、 电场耦合为主要形式。电场耦合发生的主要条件是:静电放电高频在参考地平面寄生电感中产生电平波动,平行于参考地平面上的较长信号布线就很容易通过分布电容发生电场耦合。根据高速信号回流路径的特性可知,其回流路径是贴近信号布线下方,或者信号两侧,若信号回流路径跨分割后,环路面积会随之增大;信号环路面积大从EMI角度看其空间辐射更强,从EMS角度看则更容易耦合外部噪声干扰(雷击浪涌、EFT、ESD、RS)。

记得诚 2800

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C语言知识总结:a++ 与 ++a 的区别、return 0和return 1的区别、逗号表达式计算规则、数据类型占用字节数、赋值运算符

C语言知识总结一、C语言中a++ 与 ++a 的区别二、C语言中return 0和return 1的区别三、逗号表达式计算规则四、常用基本数据类型占用空间(64位机器为例)五、C语言中的赋值运算符 一、C语言中a++ 与 ++a 的区别 “++”属于自增运算符,“a++”表示先取值,再自增加1,“++a”表示先自增加1,再取值 二、C语言中return 0和return 1的区别 return 调到主函数中 return 0 函数正常终止 return 1 函数异常终止 三、逗号

Akalaka的博客 1488

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

算术表达式和赋值表达式

算术表达式和赋值表达式 核心:表达式一定有数值! 1、算术表达式:+,-,*,/,%    考试一定要注意:“/” 两边都是整型的话,结果就是一个整型。 3/2的结果就是1.                   “/” 如果有一边是小数,那么结果就是小数。 3/2.0的结果就是0.5                   “%”符号请一定要注意是余数,考试最容易算成了除号。)%符号

天残地缺IT的专栏 1684

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C++逗号运算符与逗号表达式

C++将赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以以表达式形式出现在其他语句(如输出语句、循环语句等)中。这是C++语言灵活性的一种表现。 请注意,用cout语句输出一个赋值表达式的值时,要将该赋值表达式用括号括起来,如果写成“cout C++提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如     3+5, 6+8 称为逗号表达式,又

xiaochenjcl的专栏 445

C/C++算术运算符与表达式基本、赋值、逗号运算符(全)

算术表达式是用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,其中运算对象可以是常量、变量、函数等。例如:a*b/c-1.5+’a’是一个合法的算术表达式。由赋值运算符组成的表达式称为赋值表达式。一般形式:变量=表达式例如:x=5 赋值表达式x=5的值为 为5,x的值也为5。x=1%2+(y=5) 赋值表达式的值为6, x的值也为6,y的值为5。

weixin_65765200的博客 1365

python自减指令_python自增自减?赋值语句返回值?逗号表达式?

标签:链式条件strNPU第一个值传递可见多个优先咳咳,直接进入正题吧。自增自减(++/--),以及赋值语句,还有逗号表达式都是在C/C++中常见的运算符或表达式。熟悉C/C++的小伙伴们都知道,在C/C++中:自增自减(前缀/后缀)运算符将实现对变量值的 加1/减1; 类似 x = 0; ++x;的语句会使最终 x 的值为1赋值语句将所赋的值作为...

weixin_33303537的博客 1157

逻辑,赋值,逗号,条件运算符

逻辑: 逻辑与:a&&b(a,b同时为真,则结果为真) 注:若a为假,则跳过b,直接判结果为假 例:a=0;b=1;a&&++b;cout<<b<<endl; 打印结果为1,因为未执行++b 逻辑或:a | | b(a,b有一个为真,结果为真) 注:若a为真,则跳过b,直接判结果为真 例:a=1;b=1;a | | ++b;cout<<b<<endl; 打印结果为1,因为未执行++b 注:优先级:&a

qq_45593794的博客 325

python中:++与--;链式赋值;逗号

Python的链式赋值与C语言的链式赋值的区别。在Python中,链式赋值是一种同时给多个变量赋值的方式,可以将一个值同时赋给多个变量。Python的链式赋值是将多个变量指向同一个对象,而C语言的链式赋值是将多个变量分别赋予不同的值。因此C语言的赋值语句具有返回值,而python的赋值语句仅仅是一条语句,不是表达式,没有返回值。注:在逗号与赋值=同时出现的时候,首先执行的应该是赋值语句,x=5,y=6,x=1。而在C语言中,链式赋值是一种连续赋值的方式,每个变量都会被赋予不同的值。,它们之间没有共享关系。

cx330的博客 1698

2.10、逗号运算符与逗号表达式

C++将赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以以表达式形式出现在其他语句(如输出语句、循环语句等)中。这是C++语言灵活性的一种表现。 请注意,用cout语句输出一个赋值表达式的值时,要将该赋值表达式用括号括起来,如果写成“cout C++提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如     3+5, 6+8 称为逗号表达式,又

dapinxiaohuo的专栏 567

python自增自减?赋值语句返回值?逗号表达式?

咳咳,直接进入正题吧。 自增自减(++/--),以及赋值语句,还有逗号表达式都是在C/C++中常见的运算符或表达式。 熟悉C/C++的小伙伴们都知道,在C/C++中: 自增自减(前缀/后缀)运算符将实现对变量值的 加1/减1; 类似 x = 0; ++x;的语句会使最终 x 的值为1 赋值语句将所赋的值作为该语句的返回值(值传递); 类似 (x = func()) &gt...

dong02084的专栏 1151

19 C 语言位运算、赋值、条件、逗号运算符详解:涵盖运算符优先级与复杂表达式计算过程分析

本文全面解析了 C 语言中的位运算符(如按位与、或、异或、取反、左移、右移)、赋值运算符(包括复合赋值)、三元运算符、逗号运算符的用法,并深入探讨了运算符优先级对复杂表达式计算的影响。通过实例代码展示了各运算符的实际应用,帮助读者深入理解并掌握这些核心编程概念。

大模型全栈工程师 · Thanks_ks 2276
上一篇: 打印9*9乘法口诀
下一篇: 猜数字游戏
大力初奇迹
博客等级 码龄3年 1294粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值