i+=i-=i*=i这个式子怎么算,具体一点

如题所述

先分解 i+=i;(a) i*=i;(b) i-=i;(c);
这个公式是从左向右走的
比如i=5;
先走a i+=i; +=这种算法是先加再等于 i=i+i;这样是不对的 i+=i;整体是10 但是i依然是5,这个不知道你能明白吗?
再往右走因为后面有乘法先做乘法b 同上 i*=i; i一直是5但是 i*=i为25 把i=i*i看成一个整体是25但是i还是5;
再走c的时候 i-=i 其实是i=a-b;就是10-25=-15;追问

首先谢谢,看了你的回答我有两个疑问1.为什么是从左往右走的呢?这个怎么看?2.为什么i的值不变?a+=b相当于a=a+b是不对的吗,你的意思是不是c=a+b,a和b的值都不变,只是整体值变了?

追答

第一:算数计算什么的都是从左向右走的,有优先级的,()最高 再就是乘除,最后加减。
第二:i++;i--;i+=;i-=,这四个是自运算,这种自运算是值不变,整体数值变得,还有一种是++i,--i,这种是先运算再赋值给i;比如i=5;int c=i++; 你会发现 c的值5;如果i=5;int c=--i;这种就是先把i的值减一再给c c就是4了;
第三:a+=b相当于a=a+b,是对的,因为的你的后面还有一些其他的对于i的运算,所以是要看整体的,因为你前面的值改变了,后面的还不知道啊,就是用原来的值。

有点绕,就是整体把握就是了,这我也有点说不大清楚,自己做几个例子试试就知道了

追问

大概明白了,但是还有个问题就是一般都是从左到右运算的啊,我好想一直记错了,是不是也有的是从右往左的?而且按照优先级和从左往右计算上面的式子不应该是先*再+最后-吗?

追答

都一样,比如正常的数学运算 8+5-4*5,我们是不是先算8+5,再算4*5啊最后再算减法啊。

先算4*5,再算8+5结果一样的,但是运算习惯是从左往右走,遇到乘法再算乘法的啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-19
i=i*i i=i-i i=i+i 在具体一点 从后往前算
package test;
public class test {
public static void main(String[] args) {
int i=2;
System.out.println(i+=i-=i*=i);
}
}
最后输出是0,先是i=2*2=4再是i=4-4=0再是i=0+0=0
第2个回答  2023-03-15

首先要确定运算符优先级,确定优先级后就知道怎么算了

优先级:(*=)> (+=)  >  (-=)

所以这道题的顺序不是从右往左,也不是从左往右,而是先算右边*=,再算左边+=,最后算-=

int i=12;
System.out.println(i+=i-=i*=i);

运算结果为-120,可以自己测试

以下为步骤:

    X = (i+=i-=i*=i)

    X = i+=i-=( 12 * 12)

    X = i+=i-=144

    X = (12+12)-=144

    X = 24 - 144 

    X = -120

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网