关于自增运算符的优先级问题
请看如下代码:
public class Test {
public static void main(String[] args) {
int x= 1;
int y =(x++) + (++x) + x;
System.out.println("y="+y);
}
}
输出结果为:y = 7
再看下面这段略微修改的代码:
public class Test {
public static void main(String[] args) {
int x= 1;
int y =x + (x++) + (++x);
System.out.println("y="+y);
}
}
输出的结果却是:y = 5
老师能详细讲解一下这段程序的计算过程吗?
为什么我把x的位置改变了会导致y的值改变呢?
12
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小蓝
2022-10-18 18:26:34
同学你好,以下两个表达式的执行顺序如下:
一、(x++) + (++x) + x;
1.初始x为1;
2.执行x++,此时将1放入表达式,此时表达式为1 + (++x) + x,之后将x自增1,变为2;
3.执行++x,此时先将x自增1,x变为3,然后将3放入表达式,此时表达式为1 + 3 + x;
4.将3放入表达式,此时表达式为1 + 3 + 3,结果为7。
二、x + (x++) + (++x);
1.初始x为1;
2.将x放入表达式,此时表达式为1 + (x++) + (++x);
3.执行x++,此时将1放入表达式,此时表达式为1 + 1 + (++x);,之后将x自增1,变为2;
4.执行++x,此时先将x自增1,x变为3,然后将3放入表达式,此时表达式为1 + 1 + 3,结果为5。
祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星