假设x=2,y=31. x=(y=x)*0+y;
2. x=x%3+4*2+x++;

解决方案 »

  1.   

    1.
      1)先执行(y=x)
      2)x=(结果)
      3)进行运算(先乘除后加减)
    2.
      1)先负值x=x,和x++
      2)x=x结果和3求余
      3)进行运算(先乘除后加减)
    参考:http://lshy168.qupan.com
      

  2.   

    x和y的内存分配情况是怎样的呢?对第一个表达式,x=(y=x)*0+y;对蓝色的y,会不会因为(y=x),它的值会改变,如果不变,这是为什么?
      

  3.   

    其实这个问题挺简单
    利用eclipse的debug的单步执行,你可以看到每步变量的值的变化
      

  4.   

    2楼不对吧,
    一. x=(y=x)*0+y;  
    1. y=x       // x=2, y=2
    2. y*0+y     // = 2, y不变
    3. x=2的结果  // x=2, y=2
    二.x=x%3+4*2+x++;
    1. (x%3)+(4*2)+x   // 2%3+4*2+2=2+8+2=12
    2. x++              // x=3
    3. x=1的结果         // x=12