A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 960943877 中级黑马   /  2014-12-15 23:00  /  925 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String [] args)
{
        int a=10;
        if(a++>10)
{
        a=20;
}
        System.out.println(a);
}
晚上和小伙伴们就这个问题讨论了大半天,最终还没得出一个结论。看起来挺简单呢呀。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

3 个回复

倒序浏览
输出a=11;刚开始定义a=10;所以  if(a++>10)这句话不满足以后a会自加1,if循环里面的a=20不会运行
直接读到输出语句。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
好努力啊,成为大神的节奏
回复 使用道具 举报
同学这个很好理解的,首先你要明白前++和后++的区别。当是++a是先将a变量的值先+1后得到的这个值用来参与比较运算,当是a++则是将a变量的值先用来参与比较运算后,自身在+1;所以你的程序可以分解为下:
①(a++)  由于是后++,所以参与比较运算的值就是(10)
②由于(10>10)不成立,所以if中的语句不执行
③比较完成后a=a+1=11;
反之依然:
当是if(++a > 10)时
分解如下
①(++a)  由于是前++,所以参与比较运算的值就是a先+1后的值(11)
②由于(11>10成立,所以if中的语句执行
③a=20;

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马