关于++运算符的基本运算
a=3;
b=a++*++a;
System.out.println("a="+a+"; b="+b);
请给出详细的计算过程和说明
谢谢

解决方案 »

  1.   

    a = 5 b = 15
    ++a 先计算再取值
    a++ 先取值再计算
      

  2.   

    ++ --的优先级高于*,所以先算++ ,b=a++*++a;相当与:b=(a++)*(++a);a++后,a 当作3用,然后变为4,++a后,a变为5后当作5用,所以b=3*5;a=5;
      

  3.   

    同意一楼的说法,基本是单目运算符的优先级要高于双目的运算符.比如++与*  ++的优先级高于*  所以就是(a++)*(++a),无论a++还是++a的结果a都自增1,所以就是3*5了.
      

  4.   

    a++ 和 ++a 哪个先算是未定义的,而这个顺序会影响计算结果。
    ------------------------------------------------------
    ------------------------------------------------------
    是吗?乘法不应该有这个问题吧!如果是System.out.print((i++)+","+(++i));还可能有这个问题,请高手指点!
      

  5.   

    a++ 和 ++a 哪个先算是未定义的,而这个顺序会影响计算结果。
    ------------------------------------------------------
    ------------------------------------------------------
    是吗?乘法不应该有这个问题吧!如果是System.out.print((i++)+","+(++i));还可能有这个问题,请高手指点!
    ---------------------------------------
    ----------------------------------------
    高手给指点一下吧
      

  6.   

    计算总要有个结合律吧.
    通常以从左向右居多(当然也有特例,这个你需要查运算符表),你的问题中
    b=a++*++a;当然是++高一些,本着从左向右,先遇到a++,他是先使用,后增加,
    此时b=3*++a.a这时也是4了,*是双运算符,现有一个运算符,还差一个,遇到了
    ++a,它是先增加,后参与运算的.所以a增加到5,然后参加运算.b=3*5=15.