我是自学的新手
这教科书上的一个范例public class plus {
public static void main(String args[]){
int x1 = 3, y1 = 5;
int x2 = 3, y2 = 5;
int r1, r2;
r1 = x1++ + x1*y1;
r2 = ++x2 + x2*y2;
System.out.println("x1="+x1+" y1="+y1+" r1="+r1);
System.out.println("x2="+x2+" y2="+y2+" r2="+r2);
}
}
运行结果是
x1=4 y1=5 r1=23
x2=4 y2=5 r2=24我不是很明白
为什么在r2 = ++x2 + x2*y2;中后一个x2没有进行++的增赋值运算但是计算的时候赋值同样按4计算呢?
虽然非常基础但事后我觉得对我这种新手非常重要,望高手不吝赐教。
现在这里谢谢了

解决方案 »

  1.   

    ++x2 改变了x2 的值,接下来使用 x2的新值
      

  2.   

    x1++ 需要表达式运算完之后x1值才变
    而++x2先+1 了
      

  3.   

    哦  非常感谢  
    我自己做了这样的运算
    r2 = x2*y2 + ++x2;
    运行结果是
    x2=4 y2=5 r2=19
    所以我想问一下是因为运算是从左到右的吗?  所以后边的x2需要用已经更改了的x2的赋值我还想再问一下这个自加运算对x2赋值的影响是全局的吗? 即如果后边还有别的式子再出现x2的时候赋值应该按3还是按4算呢?  
      

  4.   

    r2 = ++x2 + x2*y2 
    ++x2 相当于x2=x2+1 下次运算的时候x2等于4 了,也就是说r2 = ++x2 + x2*y2  中的++x2=4 x2*y2中的x2也已经等于4了,所以r2=4+4*5=24
    r2 = x2*y2 + ++x2;
    此时x2还是=3 ++x2之后(++x2)就等于4了,所以3*5+4=19