这句表达式是怎么回事?
ismallboy
2016-09-10
int i = 12;
System.out.println(i += i -= i *= i); 输出是多少?为什么会这样呢?这里不是应该从右往左看,然后i是基础类型,先计算i*=i,过程先不管,结果应该和i = i * i 一样的,也就是说i变成了124,那理所应当前面还没计算的两个i也同时编程了124才对啊,毕竟他们几个i是共享一个内存的,也就是说是同一个东西,这究竟是怎么回事? |
|
ww4856156
2016-09-14
int i = 12;
int j = i,k = i; System.out.println(i*=i); System.out.println(i=j-=i); System.out.println(k+=i); 不解释大概意思就这样 |
|
回归蔚蓝
2016-09-14
你知道的
i = 12; System.out.print ( i++ );System.out.print ( i ); 结果是 1213 i = 12; System.out.print ( ++i );System.out.print ( i ); 结果是1313 赋值也一样,赋值语句是当前语句结束后赋值 所以 i += i -= i *= i 展开后是 i = i + (i = i - (i = i * i)) 在本语句结束前i的值都不会变,所以就是 i = 12 + 12 - 12 * 12 i *= i 在语句结束前都只是一个表达式,只有语句完整的计算结束后才有赋值的意义 |