c语言中的括号表达式

b+=b=((b=(2,3),b+2),15+b)
b+=b-=((b=(2,3),b+2),15+b)
这两题的解答过程会的教教我下,谢谢

括号表达式计算顺序是从左到右,然后整个表达式返回的是最右边表达式的值,如第一个表达式,先算最内层的括号表达式的最左边的值,再把其最右边的值返回并赋值给b,所以b在此次运算之后变为3,之后b+2=5(但5只是一个临时值,b值还是3),之后15+b=18,并且这个值由于是最右的表达式会作为整个大括号表达式的返回值,即b再一次被赋值为18,然后现计算b+=18得到36;
如此第二个就是-30吧,对了,赋值表达式是从右到左赋值的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-07
这是逗号表达式,没有括号表达式。。
((b=(2,3),b+2),15+b) 从左往右一次执行语句,以逗号作为分界,最后返回最后一个语句的值

所以 b=3 最后返回15+b =18 b=18 b=b+b =36

b+=b-=((b=(2,3),b+2),15+b)

赋值且运算是右结合 b=3 b-=18 b=-15 b+=b b=-30本回答被网友采纳
第2个回答  2013-09-07
请问这样的代码有什面意义?研究这样的东西和孔乙己研究茴香豆的茴字多少种写法有什么区别?编程注重的是思想和逻辑,代码需要的是表达清晰,简洁明了。可能说的有点过,希望不要介意。
第3个回答  2017-06-17
我理解错了