黑马程序员技术交流社区

标题: 搞不懂这道题 [打印本页]

作者: zhanganping    时间: 2016-1-12 21:30
标题: 搞不懂这道题
  1. class Demo {
  2.   public static void main(String[] args) {
  3.      int a = 10;
  4.       if (a++ > 10) {
  5.           a = 20;
  6.       }
  7.     System.out.println(a);
  8.    }
  9. }
复制代码

这道题的详解是什么



作者: 1178988315    时间: 2016-1-12 21:38
答案是 a=11。 if判断是 a=10 所以 a>10 结果为false,然后a++,a=11,最后打印结果为11。
作者: wuzeshui    时间: 2016-1-12 21:46
a++ 在参与运算的时候会先参加运算,再进行自加,在if判断中会先和10进行比较再进行自加,所以判断是false,if语句就不会进行,但是a已经自加,再输出以后就是11了
作者: 黑色皮肤的马    时间: 2016-1-12 21:55
由于是if(a++ > 10)首先判断 a > 10,这是false,然后a自增为11,由于a++>10是false,不会进入if的语句体中,也就是不会执行a = 20,所以最后输出了a 是11
作者: 擎天柱    时间: 2016-1-12 22:08
11,是前置++先加后用与后置++先用后加的区别
作者: zhanganping    时间: 2016-1-13 00:00
wuzeshui 发表于 2016-1-12 21:46
a++ 在参与运算的时候会先参加运算,再进行自加,在if判断中会先和10进行比较再进行自加,所以判断是false ...

谢谢,我现在看了你的叙述才明白,
作者: wuzeshui    时间: 2016-1-13 00:11
zhanganping 发表于 2016-1-13 00:00
谢谢,我现在看了你的叙述才明白,

客气,我也是才刚学过
作者: keaitao0321    时间: 2016-1-13 11:46
楼上正解
作者: zzh111    时间: 2016-1-13 22:38
学习了!!!
作者: 一大把手    时间: 2016-1-14 11:06
学习了受教了
作者: 晓寒轻    时间: 2016-1-14 13:11
樓上都是 正解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2