int a =2;
int b=(a++)+3*a;
System.out.println(b);
运行结果11

解决方案 »

  1.   

    先执行a++ 执行过后呢a还是3 但是(a++)是2  然后执行3*a 然后相加
      

  2.   

    (a++)+3*a  ->  2+3*a  & a=3
      

  3.   


    程序是这样走的:
    1.a=2(初始化赋值)
    2.运算(a++)+3*a
    3.把运算结果赋给b关键在第二步:原来的a=2,进行(a++)操作时,(a++)的值是2,然后a就变成了3。再后面是3*a也就是3*3。然后根据运算的优先级再进行2+9的加法运算,就得到了11
      

  4.   

    找些资料看看运算时的优先级顺序,很容易就解决了。
    在这里,优先级别()>++>*>+
    明白了优先级,以后就不会遇到同样的问题了
      

  5.   

    先执行a++,(a++)=2->这是系统第一次引用a的内存地址所以a=2,然后把(a++)=3->这是系统第二次引用a的内存地址但是a++已经赋值给了a原来的内存地址所以a++=3所以3*a=9,关键是前面那个a++不好理解,还有一个是++a    ++放前放后是有区别的 ++放前是计算并马上赋值而放后则是计算并不是马上赋值
    待高手指正