问题1:
public class Test {
public static void main(String[] args) {
int a = 2;
System.out.println(a + 3 * a++); }
}
结果是8! 不是9,求解!问题2:
如果实现整形运算的四舍五入?请各位帮忙!

解决方案 »

  1.   

    问题1:a+3*a++ 执行过程是:2+3*2++ ,按照运算规制是:先做3*2,然后a变为3,最后2+6=8。
    问题2:整形运算没有四舍五入,只有小数有。
      

  2.   

    System.out.println( 3 * a++ + a);结果是9 ,只是调换了a的位置。why?
      

  3.   

    3 * a++ = 6 此时a = 3
     6 + a = 6+3=9
      

  4.   

    ++a 是先加1再取值 a++是先取值後加1用一個取出值和現值來判斷就行a=2
    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;
      

  5.   

     1st 这个是考察的运算符的优先级,LZ看好就是了。 2nd java语言的强制转换不是数学上的4舍5入。真要实现的话,自己封装个函数,在里面根据小数位的值进行判断就是了。
      

  6.   


    这个顺序变化后结果是不相同的: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。。
      

  7.   

    一.2+3*2++=8 
    二. NULL
      

  8.   

    a++是运算完,a再加加
    四舍五入用Math.roandom();
      

  9.   

    对于 ++a 与 a++ 可以这样简单的说,假设a=1,如果后面使用++a时,并且是第一次使用时,这是先将a的值加1,再使用。对于a++可以这样理解,如果后面使用a++时,并且是第一次使用时,这时a还是原来的值,但第二次再用到a时,这时就要将a的值先加1再使用。我所说的,你理解了,你就知道你写的程序的值为什么是8而不是9了……
      

  10.   

    必须的是8
    a + 3 * a++中最先执行的是++运算符而a++说明是先使用a在+1
    所以a + 3 * a++=2+3*2=8
      

  11.   

    比如 
    a = 2;
    i = a++;
    i的结果就是2 
    因为++在后 先把a的值赋给i 然后a 自己才开始++ 如果 
    i = ++a;
    i的结果就是3 
    因为++在前 先把a++ 了以后 才赋值给i