问题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个数组比较
- 求一个分析文本信息的代码
- jdk和jbuild的问题
- [求助]如何程序在最小化后,仍然能使快捷键起作用?
- 关于SWING的问题
- 求一个算法,数字末尾是99的留下来,如果末尾是999、9999的就将其加3,例如:12599、99、383399、199符合条件,留下来。
- 请问eclipse有没有象jbuilder那样的可视化设计工具?design功能
- java,C++,C,Pascal四种语言的区别,特点,大家来说说,发言有分。
- 有没有对Class:Observer,熟悉的?
- JAVA包中的类在系统(只装JBUILDER3)中以何种形式存在?
- instanceof 是怎样实现的?
- 超级菜鸟求助
问题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