逗号表达式必须有括号吗(c语言逗号表达式 是不是所有的逗号表达式在做赋值时都得加括号 不然就认为是赋值为第一个表达式的值)

本文目录
- c语言逗号表达式 是不是所有的逗号表达式在做赋值时都得加括号 不然就认为是赋值为第一个表达式的值
- C语言逗号表达式的问题 x=6,y=7,z=8 r=func((x--,y--,x+y),z--)
- c语言,逗号表达式要带括号吗为什么书上的逗号表达式都带括号
- 求编程大侠解答!一个C语言逗号表达式和括号的问题
c语言逗号表达式 是不是所有的逗号表达式在做赋值时都得加括号 不然就认为是赋值为第一个表达式的值
逗号是依次向后运算
y=4,5; //把4赋值给y,逗号依次运算,到了5,但没有等号进行赋值,所以y=4;
y=(4,5); //括号内的都是赋值给y的值,先把4赋值给y,然后逗号依次运算,把5赋值给y,所以y=5.
C语言逗号表达式的问题 x=6,y=7,z=8 r=func((x--,y--,x+y),z--)
首先说明原理:
1)逗号运算符也称顺序求值运算符,即从左至右顺序执行,最后一个值会覆盖前面的值,所以使用逗号将几个表达式连接起来的带括号的表达式,最终整个逗号表达式的值为最后一个表达式的值。
2)自增和自减运算符有前置和后置之分,在混合运算中,前置是先自增或者自减,再进行取值;而后置恰好相反,即先取值进行运算,然后再自增或者自减。
在r=func((x--,y--,x+y),z--)这个函数调用中,第一个参数使用了原理1)和2),第二个参数使用了原理2)。
首先对于第一个参数(x--,y--,x+y),这是一个逗号运算符,从左至右运算:x--(先取x的值,然后x自减,其值变为x=5),同理(先取y的值,然后y自减,其值变为y=6),但由于这是一个逗号运算符,因此x+y的值为x+y=5+6=11,最终r=func((x--,y--,x+y),z--)=func(11,z--);
其次,z--同理,先取值z=8进行传参数,进行函数调用r=func((x--,y--,x+y),z--),然后z才执行自减(从而z=7)
补充:如果x--,y--换成r=func((--x,--y,x+y),z--)结果也是一样的,这是因为逗号运算符是从左至右进行运算的,先算完第一个逗号之前的表达式,在计算第二个逗号之前的表达式,依此类推,故,无论是前置还是后置,x的值都是在计算第二个逗号之前已经改变;但是逗号运算符中最后一个逗号除外(即前置才起作用,后置对逗号表达式的结果没影响)。。。
书写不易,人艰不拆,不喜勿喷,谢谢点赞!!!
c语言,逗号表达式要带括号吗为什么书上的逗号表达式都带括号
括号内加逗号的表达式属于逗号表达式,逗号表达式的规则是从左往右依次执行语句,并返回最后一个语句的结果,如果计算到最后最后一个表达式的值为真,则整个逗号表达式为真,否则为假。
求编程大侠解答!一个C语言逗号表达式和括号的问题
逗号很好办,逗号就是单纯分隔两个式子,括号的主要作用是将括号内的运算式子作为一个整体,也有优先运算的含义(这个含义和数学上是一样的)
对于你的这段程序,首先说b,原式是(b=4*5,
b*2),
b+6
首先计算b=4*5,此时b=20,然后算逗号后的式子就是b*2,注意这里没有说把结果赋值给b,所以b还是等于20,最后的b+6同理,只是计算了一个式子,并没有保存结果,所以b最后的输出为20;
再说a,输出的式子是一个括号,这是一个整体,式子里面首先计算a=3*5,所以a=15,然后计算a*4,同样没有被保存,a还是15,最后计算a+5,这个时候还是没有赋值,所以a=15。但是由于在同一个括号里有2个逗号分开了3个式子,所以括号这个整体的值由最后一个式子决定,最后一个式子的值是a+5,也就是15+5,所以括号这个整体的值是20,输入为20。

更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00






