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,请各位赐教!!!(请写出过程!谢谢!)
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,请各位赐教!!!(请写出过程!谢谢!)
楼主【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 %
敬礼!
结果就是16了.
x++是先参与运算再自增;++x是先自增,然后参与运算
x = x + ((x++) + ((x++) + m));
先计算红色部分,x为5,再计算蓝色部分,x为5,然后x自身加了1,到绿色部分的时候x就是6了,所以结果是16
貌似++x是不能做左值的,所以只能看成如上形式运算,而不能写成x = x + (x+(+ + (x+(++m)); 的形式。
y = x++;这里的y在x++后,是5不是6.