首页 > 试题广场 > 最后输出什么
[单选题]
 public void test() {
        int a = 10;
        System.out.println(a++ + a--);
    }
最后输出什么?
  • 19
  • 20
  • 21
  • 22

a++ 先把10赋值给a 再+1 所以左边是10 但此时a=11。右边a-- 也是先赋值 a=11,再-1。10+11=21 此时a=10。


编辑于 2019-09-19 15:21:37 回复(6)
a=10
(a++  +  a--)可以这样拆分:a++ 是先用后 +,因此a++ 为10;
a - -是运算,因此这时 a=11 ,(a++  +  a--)=a+a+1=21
发表于 2020-02-24 15:43:23 回复(0)
a++
a是10 执行完a++那么就是11 故a--是11
也就是10+11
发表于 2019-09-24 18:18:27 回复(0)
++和--的优先级比 + 的优先级高
所以先a++,再计算a--
+号左边:计算a++,此时a为11
+号右边:计算a--,即11 - 1,此时a为10
最终运算:11 + 10 = 21
发表于 2020-02-08 21:26:47 回复(0)
左结合 先算左边
发表于 2019-09-26 11:22:33 回复(1)
一开始 a++ = 10
然后 a-- ,这里第二次调用了a,所以等于是执行了a了这时候,就变成了11
所以最终结果是 11+a-- = 21
是这样吗,哈哈哈哈哈
发表于 2020-04-29 22:10:58 回复(0)
我觉得是先使用a=10作为加法的第一个操作数,再++,然后a=11作为加法的第二个操作数,结果为21,最后--,a 又变为10,但是已经不影响加法结果了
发表于 2020-04-16 09:28:28 回复(0)

++X--X,前置运算,都是先自增或自减,再参与运算
X++X++,后置运算,都是先参与运算,再自增或自减

发表于 2020-03-30 13:44:54 回复(0)
我觉得我需要学一学Java汇编后的指令了。按照我的理解,a++和a--是同时放到操作数栈的。。。
发表于 2020-03-29 10:34:01 回复(0)
因为计算机从左边开始进行读取指令,后置自加的运算规则是a先用后自加,所以+前面a为10,然后a自加为11。自减也一样,加法后加的是11,之后再自减。
发表于 2020-03-01 00:12:54 回复(0)
21,感觉有点坑,无论怎么想,答案都一样,a++ + a--可以11+10,也可以10+11
发表于 2020-02-14 18:18:09 回复(0)
后置运算符取当前值,然后再改变;前置运算符先改变,在获取当前值。
(a++ + a--)等于:
1.将a压栈(a=10)
2.a=a+1(a = 11)
3.运算符+压栈
4.将a压栈(a=11)
5.a=a-1(a=10)
发表于 2020-01-18 13:15:42 回复(0)