问题1:
public class Test {
public static void main(String[] args) {
int a = 2;
System.out.println(a + 3 * a++); }
}
结果是8! 不是9,求解!问题2:
如果实现整形运算的四舍五入?请各位帮忙!
public class Test {
public static void main(String[] args) {
int a = 2;
System.out.println(a + 3 * a++); }
}
结果是8! 不是9,求解!问题2:
如果实现整形运算的四舍五入?请各位帮忙!
问题2:整形运算没有四舍五入,只有小数有。
6 + a = 6+3=9
2+3*2(a變成3) == 8a=2
3*a++ +a ==> 3*2 (a變成3) +3 == 9float f = 0.5F;
(int)f+(int)(2*f%2) = 1;
这个顺序变化后结果是不相同的:3*a++ + a这个表达式中先做3*a++得到6,完了后a变成了3,这时后面的a已经被更新为3,所以得到9;a + 3*a++这个表达式中a刚开始都被初始化为2了(即使先执行3*a++也不会回过来更新前面的a),所以其实是2 + 6 = 8;执行完了后a才变为3了。四舍五入可以借助Bigdecimal解决,里面有好几种模式就包括四舍五入的。记不大清楚了,楼主可以自己
查查api。。
二. NULL
四舍五入用Math.roandom();
a + 3 * a++中最先执行的是++运算符而a++说明是先使用a在+1
所以a + 3 * a++=2+3*2=8
a = 2;
i = a++;
i的结果就是2
因为++在后 先把a的值赋给i 然后a 自己才开始++ 如果
i = ++a;
i的结果就是3
因为++在前 先把a++ 了以后 才赋值给i