首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表达式j+=j-=j*j和j+=j*=j-=j -=j的结果和解析结果是什么?(倍数等于)

表达式j+=j-=j*j和j+=j*=j-=j -=j的结果和解析结果是什么?(倍数等于)
EN

Stack Overflow用户
提问于 2017-05-26 01:51:07
回答 2查看 115关注 0票数 0

这个表达式是从左到右解析的吗?我试图解释分析的结果,但最后的结果是错误的。

代码语言:javascript
复制
int j=10, k=10; 
j+=j-=j*=j;   //j=j+(j-=j*=j)=j+(j-j*j)
k+=k*=k-=k;   //k=k+k*k-k;
System.out.println(j+";"+k);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-26 02:05:13

这些作业是从右到左解析的。你表达的方式

代码语言:javascript
复制
j+=j-=j*=j; 

作为

代码语言:javascript
复制
j=j+(j-j*j);

是正确的,但操作顺序最好用以下方式表示:

代码语言:javascript
复制
j=j+(j-(j*j)));

同样,您可以将涉及k的赋值重写为:

代码语言:javascript
复制
k=k+(k*(k-k));

-80和10分别是正确的答案。

票数 3
EN

Stack Overflow用户

发布于 2017-05-26 02:05:30

我试图在每一步中更清楚地说明变量到底发生了什么。

请记住,结果是从右到左解析的。

代码语言:javascript
复制
  int j=10, k=10;

  j += j -= j *= j;
//          j *= j   ---> j = 10*10 = 100
//j += j -= 100
//     j -= 100      ---> j = 10-100 = -90
//j += -90           ---> j = 10+(-90) = -80
//j = -80

  k += k *= k -= k;
//          k -= k   ---> k = 10-10 = 0
//k += k *= 0
//     k *= 0        ---> k = 10*0 = 0
//k += 0             ---> k = 10+0 = 10
//k = 10

  System.out.println(j+";"+k); //Prints -80;10
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44192383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档