c++中,逗号表达式(x=4*5,x*5),x+25的值怎么求?

目前搜索到45和100两种答案,我自己运行了一下结果应该是100,请问如何解释?这个100怎么来的?... 目前搜索到45和100两种答案,我自己运行了一下结果应该是100,请问如何解释?这个100怎么来的? 展开
 我来答
Yuqi_Tan

2021-10-03 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3478万
展开全部
逗号表达式(x=4*5,x*5),x+25
不妨另设一个变量a,并赋值:
a=((x=4*5,x*5),x+25);①
注意一定要在最外面再加一个括号。否则,是这样的:
a=(x=4*5,x*5),x+25;②
这样会把a=(x=4*5,x*5)与x+25割裂开了,成了一个新的逗号表达式。
所以,①才是唯一正确的解释。
看一看这有两个逗号、两个括号的表达式的值究竟是什么:
它由三个表达式构成(下面也是运行过程和执行顺序):
表达式一:x=4*5=20(这一句有赋值作用)
表达式二:x*5=20*5=100
表达式三:x+25=20+25=45
大表达式四:a=((x=4*5,x*5),x+25)
=((20,100),45)=(100,45)=45
根据逗号表达式的定义,看一下①的结构,它的值等于最后一个表达式的值,即表达式三的值,所以,①的结果是45并把它赋值给a。
再来看②,它由两个表达式组成,前一个又由两个表达式组成,运行顺序是:
①表达式一:x=4*5=20(这一句给x赋值20)
②表达式二:x*5=20*5=100
③前一个大表达式三:a=(x=4*5,x*5)=(20,100)=100(这一句给a赋值)
④表达式四:x+25=20+25=45
可以看出,两者得到的a的值并不相同,正确的一个是45,错误的一个是100。
现在看你发的图片中的问题,你输出的是:
cout<<(x=4*5,x*5),x+25;
实际上,你输出了前面一部分(x=4*5,x*5)的值,而把后面的x+25忽略掉了。
你试一试:
cout<<((x=4*5,x*5),x+25);
看看是不是45了?
侧云ceyun
2021-10-01
知道答主
回答量:31
采纳率:0%
帮助的人:1.8万
展开全部
x*5和x+25是不会改变x的值的,x应该是20
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式