黑马程序员技术交流社区

标题: 关于a=a++的疑问 [打印本页]

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

作者: My_work    时间: 2014-3-8 01:29
a++赋给a的是
作者: nicholyx    时间: 2014-3-8 01:30
My_work 发表于 2014-3-8 01:29
a++赋给a的是

a++赋给a的是1,但是赋完值之后a不是自增1吗?
作者: My_work    时间: 2014-3-8 01:31
a++赋给a的是a自加之前的值,++a才是自加后的值,a++的值是1,a=a++后,a还是1
作者: 榨菜    时间: 2014-3-8 01:34
http://www.2cto.com/kf/201401/270286.html  百度的这篇应该有帮助
作者: nicholyx    时间: 2014-3-8 01:36
My_work 发表于 2014-3-8 01:31
a++赋给a的是a自加之前的值,++a才是自加后的值,a++的值是1,a=a++后,a还是1

嗯嗯,我明白你的意思,a++赋给a的的确是a自加之前的值,但是执行完整条语句(a=a++;)之后a不是还要进行一次自增吗?  明天再跟你探讨,休息去了
作者: My_work    时间: 2014-3-8 01:37
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;
作者: 一诺千金    时间: 2014-3-8 11:16
public class dhogd {
        public static void main(String[] args){
                int a=1;
                int b;
                b=a++;
                a=a;
               
                System.out.println(a);
        }
}
这样结果就是 2
a++赋值完了以后自增,你打印的是先赋值的,没有打印运算后的
作者: 刘腾    时间: 2014-3-8 11:22
其实就是先赋值后自增   和先自增后赋值的问题
作者: osully    时间: 2014-3-8 14:53
突然觉得 这个a=a++; java处理的不科学!!!
应该是个bug!!!!




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