导航:网站首页 >
C语言中,赋值表达式:(a=3*5)=4*3,为什么整个表达式的值为1,表达式x=(a=3,6*a)和表达式x=a=3,6*a分别是
C语言中,赋值表达式:(a=3*5)=4*3,为什么整个表达式的值为12...,表达式x=(a=3,6*a)和表达式x=a=3,6*a分别是赋值表达式和逗号表达式...
匿名网友:
逗号表达式的要领:(1) 逗号表达式的运算过程为:从左往右逐个计算表达式。
(2) 逗号表达式作为一个整体,它的值为最后一个表达式也即表达式n的值。
(3) 逗号运算符的优先级别在所有运算符中最低。
试述 a=(a=3*5,a*4) 计算过程:1、括号具有最大优先级2、括号内:因为 = 高于逗号的优先级,计算 a =3*5 =15表达式变为 a=15, a*4逗号表达式计算由左至右:a = 15 a*4 = 15* 4 = 603、括号结束4、a = 60
匿名网友:
(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了
匿名网友:
确实,赞同2楼的说法。
。
。
如果说a=(3*5,a*4)有个括号的话,才是如1楼所言。
。
。
。
另外,所不解的是a=3*5,a*4,a+15 这一整体是一个表达式,还是说这是两个两个不同的表达式。
。
。
如果这只是一个式子的话,赋值号左边又是什么呢?若是两个的话,就如二楼所言。
。
。
逗号优先级是最低的了。
。
比复制号更低。
。
如果说表达式是a=(a=3*5,a*4),a+15的话。
。
那么最终,表达式右边值=75,但是a=15 细看题目之后,觉得二楼所补充的恐怕不是本意吧,。
。
。
逗号表达式a=3*5,a*4,a+15的值为 ,a的值为 。
这分明是两个问题!(a=3*5,a*4),a+15的值为 这个问题的答案应该是75a的值为 这个问题的答案才是15 !!!回复二楼问题。
。
看清的题目,以及我所写的回答!我没说a=75,我所说的是a=3*5,a*4,a+15这个表达式值为75.。
。
a的值还是15.。
。
这原本就是两个问题!假如写成b=(a=3*5,a*4),a+15;printf("%d,%d",b,a)...就会更明朗了吧额。
。
。
好吧。
。
。
(a=3*5,a*4),a+15该表达式的值确实是30,运算过程就是a=3*5,a*4此表达式值为60,但a的值实为15,逗号后的值未被赋值,之后a+15,所以最终为30.。
。
。
第二个问题a的值还是15.。
。
。
是我错了。
。
。
。
问题推荐