C语言。表达式的值“(x=2*5,x-3),x*4“的值怎没求

如题所述

逗号表达式,例如:Y=(x=2*5,x-3),x*4;则先计算x=2*5,x=10;接着计算 Y=(10,7),40;
逗号表达式只取最后一个数据,所以Y=7;
假如加一个括号是另外一个情况:
Y=((x=2*5,x-3),x*4);则先计算x=2*5,x=10;接着计算 Y=((10,7),40);
逗号表达式只取最后一个数据,所以Y=40;追问

没加括号,参考答案是40

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-22
40
首先x=10,表达式是x*4的值,所以是40追问

不是应该先算括号里面吗,我这样算的,括号里面是x-3的值是7然后算x=7,x*4的值,28为什么不对阿

追答

x-3没有赋值啊

追问

噢懂了3q

第2个回答  2024-02-25

在c语言中这是属于逗号表达式中的嵌套,也就是表达式1嵌套另个表达式。

(x=2*5,x-3)为表达式1,并嵌套了一个逗号表达式。

x*4为表达式2.

表达式1结果为7,但在表达式1中x的值始终为10,因为10赋值给x,并存储到x的内存单元中,而表达式1的结果7并没有被任何对象给接收到,所以x为10.

在表达式2:x*4就会等于40.

整个表达式的值为最后一个表达式的值,表达式2为最后一个值,所以这个逗号表达式的值为40.

但是在实际中,在实际中x的值会是10,也就直接就取出x的赋值,也就是最后一个表达式的值也没有被任何对象给接受,所以最终答案为10.

在这个表达式的基础上做出一点修改(x=2*5,x-3),x=x*4;

则x的值就会等于40,因为在最后将表达式2的值赋值给x。

第3个回答  2015-01-22
不好意思,没看懂题目的意思...