在用下面一段代码测试自增运算符时,结果和自己的想象有点出入,测试结果为8,为什么不是9???
public static void main(String[] args) {
// TODO 自动生成方法存根

int a=2;
int b;
int c;
b=a+3*a++;
System.out.println(b);//result is 8,why is not 9;


}

解决方案 »

  1.   

    这些还可能是IDE-Independent的
    在Eclipse中测试
    表达式是由左向右计算 且一旦读取后值不再变更(应是放入独立值栈了)b = a + 3 * ++a;
    result: 11b = ++a + 3 * a;
    result: 12如上两行测试可见一斑
      

  2.   

    如果:b = ++a + 3 * a++;
    那么运算结果就是12了
      ++的优先级别要高于*而b=a+3*a++; 
    相当于先3*a然后与static的a相加咯!嘿嘿  
      

  3.   

    ++单独使用,前置和后置是一样的,但在表达式中是不同的!!!
    b=a+3*a++; ==>b=a+3*a; a=a+1;   结果是8,而a是3;
    如果b=++a*3+a ==>a=a+1; b=a*3+a; 结果是12;