C语言逗号表达式(a=3*5,a*4,a+5)的值是多少?

如题所述

(a=3*5,a*4).a+5
应该是
(a=3*5,a*4),a+5 吧

逗号表达式注意两个基本知识:
1. 逗号表达式的运算顺序是从左向右运算
2. 逗号表达式的值取逗号中最右表达式的值

现在看(a=3*5,a*4),a+5这个逗号表达式,
首先对于(a=3*5,a*4)和a+5来说,按照从左向右运算先计算(a=3*5,a*4)

(a=3*5,a*4)
这个逗号表达式从左向右运算先计算a=3*5,这是个赋值语句,处理a=3*5=15
再计算a*4,此时a=15,所以a*4=60,但是注意这个表达式并没有对a赋值,仅仅是一个乘法运算
根据逗号表达式的值取逗号中最右表达式的值的原则,(a=3*5,a*4)的值为60

再看a+5,
之前运算(a=3*5,a*4)时,a已经被赋值为15,所以这里a+5=15+5=20
所以a+5这个表达式的值为20

再根据逗号表达式的值取逗号中最右表达式的值的原则,
表达式(a=3*5,a*4),a+5 的值即为a+5的值,也就等于20了
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-12
逗号表达式的值是最右边表达式的值
a=3*5 赋值给a=15
a*4 这个表达式的值被丢弃
a+5 是逗号表达式的返回值 15+5 =20

逗号表达式的值是20本回答被网友采纳
第2个回答  2009-02-25
首先逗号是左结合的所以那个括号没意义

a = 3 * 5, a * 4, a + 5

最左边导致a被赋值为15;中间的表达式结果是60,但是并没保存;右边表达式结果是20作为整个表达式的最终结果
第3个回答  2009-02-25
逗号表达式,按从左到右顺序进行,先计算a=3*5,再计算a*4.最后是计算a+5.因为a*4的值没有赋值给a,所以逗号语句结束后,a的值为15,所以最后a+5=20 .
第4个回答  2014-06-27
20,逗号表达式从左到右执行,结果取最右本回答被提问者采纳
相似回答