public class Test{
    public static void main(String[] args){
           int x=5;
           int m=0;
           x+=x+++(x+++m);
           System.out.println(x);
    }
}
    A.5       B.10      C.16    D.运行出错我的答案是D,但是答案是C,请各位赐教!!!(请写出过程!谢谢!)

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【zack1011】截止到2008-07-27 16:07:16的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:30                       每贴平均分数:30                       
    回帖的总数量:4                        得分贴总数量:2                        回帖的得分率:50%                      
    结贴的总数量:1                        结贴的总分数:30                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    x+=x+++(x+++m);    x++  这里X = 5    (x+++m)  这里X = 6;  x += 11;
      结果就是16了.  
      

  3.   

    2楼,5楼综合一下,楼主问题就可以解决了:
    x++是先参与运算再自增;++x是先自增,然后参与运算
    x = + ((x++) + ((x++) + m)); 
    先计算红色部分,x为5,再计算蓝色部分,x为5,然后x自身加了1,到绿色部分的时候x就是6了,所以结果是16
    貌似++x是不能做左值的,所以只能看成如上形式运算,而不能写成x = x + (x+(+ + (x+(++m)); 的形式。
      

  4.   

    呵呵,其实关键是x++,这个操作符的意思是,先将x的值取出来,然后加1,并使用,再将原始值还给x。比如:x = 5;
    y = x++;这里的y在x++后,是5不是6.