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

xinyuya 1年前 已收到2个回答 举报

319422 幼苗

共回答了23个问题采纳率:91.3% 举报

先分解 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年前 追问

4

xinyuya 举报

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

举报 319422

第一:算数计算什么的都是从左向右走的,有优先级的,()最高 再就是乘除,最后加减。
第二: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的运算,所以是要看整体的,因为你前面的值改变了,后面的还不知道啊,就是用原来的值。
有点绕,就是整体把握就是了,这我也有点说不大清楚,自己做几个例子试试就知道了

xinyuya 举报

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

举报 319422

都一样,比如正常的数学运算 8+5-4*5,我们是不是先算8+5,再算4*5啊最后再算减法啊。
先算4*5,再算8+5结果一样的,但是运算习惯是从左往右走,遇到乘法再算乘法的啊

接罩 幼苗

共回答了19个问题采纳率:84.2% 举报

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

1年前

0
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 18 q. 0.036 s. - webmaster@yulucn.com