在C语言中,如果有如下定义:int x=5,y;y=(x*3,x+13),x*2;则y =

在C语言中,如果有如下定义:int x=5,y;y=(x*3,x+13),x*2;则y =图片上的第34题。能说一下过程吗?谢谢了!

(x*3,x+13)是一个逗号表达式,结果是最右边那个表达式x+13的值18。y=(x*3,x+13),x*2;即y=18,x*2;又是一个逗号表达式,先将y赋值为18,再算x*2等于10。所以y=18。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-09-23

这个题有两点需要注意的:

    逗号表达式,其值为最后一个表达式,例如 c=(a,b) 那么 c= b

    赋值运算符的优先级高于逗号表达式的优先级,例如 c=a,b 那么 c=a

基于上述基本原则,再来看本题,

根据逗号表达式的规则,y=x+13,x*2

根据赋值运算符的优先级,y=x+13,即 y=5+13 = 18

第2个回答  2019-09-23
这题主要就是明白两个概念:
1、逗号表达式将多个子式联接起来,从左往右计算,整个逗号表达式的值为最后一个子式的值。
2、逗号表达式的运算优先级最低,一定是最后计算

明白这两个概念之后,再来看这个表达式y=(x*3, x+13), x*2
1、首先,括号的优先级最高,先算(x*3, x+13)
2、括号内部是一个逗号表达式,联接了两个子式x*3, x+13,值分别是15、18,所以逗号表达式的值为18,即括号表达式为18
3、然后计算赋值表达式y=(x*3, x+13),计算结果为y=18
4、最后,再计算一个逗号表达式y=(x*3, x+13),x*2,结果是18、10,逗号表达式的值为10
所以,最后y=18
第3个回答  2019-09-23
这是逗号表达式,注意的是在c语言中赋值也是表达式,这个式子被分解成两部分,y=x+5是第一部分,x+5的值赋值给y,y的值变为7,而x+y是第二部分,求了值没作用就丢掉了,所以y的值就是7,如果你这样写情况就不一样了:y=(x+5,x+y)逗号运算符的优先级低于赋值运算符
第4个回答  2019-09-23
int x=5,y;y=(x*3,x+13),x*2;则y =10
它是先算x*3(值为15),然后再算 x+13(值为18),再算x*2(值为10),最后把10赋值给y。
所以,y的值为10。
相似回答