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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© nicholyx 中级黑马   /  2014-3-8 01:23  /  1104 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于a=a++的疑问
int a = 1;
a = a++;
System.out.println("a=" + a);    //为什么输出a=1? 执行a = a++的时候,a的确先把原来的值1赋值给a,
                                                    //但是后来a又自增了一次,最终结果a不是等于2吗?求详细解释。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

9 个回复

倒序浏览
a++赋给a的是
回复 使用道具 举报

a++赋给a的是1,但是赋完值之后a不是自增1吗?
回复 使用道具 举报
a++赋给a的是a自加之前的值,++a才是自加后的值,a++的值是1,a=a++后,a还是1
回复 使用道具 举报
http://www.2cto.com/kf/201401/270286.html  百度的这篇应该有帮助
回复 使用道具 举报
My_work 发表于 2014-3-8 01:31
a++赋给a的是a自加之前的值,++a才是自加后的值,a++的值是1,a=a++后,a还是1

嗯嗯,我明白你的意思,a++赋给a的的确是a自加之前的值,但是执行完整条语句(a=a++;)之后a不是还要进行一次自增吗?  明天再跟你探讨,休息去了
回复 使用道具 举报
nicholyx 发表于 2014-3-8 01:30
a++赋给a的是1,但是赋完值之后a不是自增1吗?

a=a++;的过程中,a进行了两次运算
  1. int a=1,b;
  2. a=b=a++;
复制代码

最后a==1;
回复 使用道具 举报
public class dhogd {
        public static void main(String[] args){
                int a=1;
                int b;
                b=a++;
                a=a;
               
                System.out.println(a);
        }
}
这样结果就是 2
a++赋值完了以后自增,你打印的是先赋值的,没有打印运算后的

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
其实就是先赋值后自增   和先自增后赋值的问题
回复 使用道具 举报
突然觉得 这个a=a++; java处理的不科学!!!
应该是个bug!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马