若有以下定义,则计算表达式y+=y-=m*=y后的y值

#include"stdio.h"voidmain(){intm=5,y=2;y+=y-=m*=y;printf("%d",y);}答案为什么是-16,而不是-6。希望有... #include "stdio.h"
void main()
{
int m=5,y=2;
y+=y-=m*=y;
printf("%d",y);
}

答案为什么是-16,而不是-6。

希望有精细的解释
展开
 我来答
软件__高手
2009-12-28 · TA获得超过569个赞
知道小有建树答主
回答量:405
采纳率:0%
帮助的人:350万
展开全部

表达式从右向左计算也就是程序中的y+=y-=m*=y;相当于:

m=m*y;

y=y-m;

y=y+y;

所以程序的执行结果是:

崇元化65
高粉答主

2020-07-09 · 说的都是干货,快来关注
知道小有建树答主
回答量:202
采纳率:100%
帮助的人:5.1万
展开全部

从左往右分解,y+=y-=m*=y 就是 y=y+(y-=m*=y)

y-=m*=y 就是 y=y-(m*=y)

m*=y 就是 m=m*y

那么就等于:

m=m*y;//m=10,y=2

y=y-m;//m=10,y=-8

y=y+y;//m=10,y=-16

y为-16

扩展资料:

嵌套循环(LOOP JOIN)类似于C语言编程时的双重循环。作为外层循环逐行扫描的表,针对外部输入表的每一行,适用于外部输入表的行数较少,内部输入表创建了索引的情形。

合并连接(MERGE JOIN)类似于两个有序数组的合并。两个输入表都在合并列上排序;然后依序对两张表逐行做连接或舍弃。如果预先建好了索引,合并连接的计算复杂度是线性的。

参考资料来源:百度百科-连接

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenming929
2009-12-28 · TA获得超过276个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:172万
展开全部
y+=y-=m*=y;

按照运算优先级

y+= (A)
需要先计算 (A),不然根本不知道y要加多少

(A) = y-=(B)
需要先计算(B),不然根本不知道y要减多少

(B)=m*=y = 10

得出了(B)的值,接下来计算 y-=(B) 即(A)的值 得出 y=-8

得出y的值后计算y+= (A)

即: -8+=(-8) = -16

明白了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-12-28
展开全部
这种自加自减的运算是从右往左的,所以先算m*=y,m=m*y=10;y-=10,y=y-10=-8;但是现在的y经是-8了,而不是2,所以最后y+=-8,y=-8-8=-16
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
御¢风7205
2009-12-28 · TA获得超过288个赞
知道小有建树答主
回答量:245
采纳率:0%
帮助的人:178万
展开全部
从右向左读

M*=Y // M=M*Y 此时M=10 Y=2 表达式=10
Y-=M // Y=Y-M 此时Y=2-10=-8
Y+=Y // Y=Y+Y 此时Y=-8 + -8 =-16
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式