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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 悲伤丿心 初级黑马   /  2015-7-26 15:02  /  450 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

程序一:
int a=10;
a=a++;
System.out.println(a);
程序二:
int a=10;                       
System.out.println(a++);
System.out.println(a);

程序一的结果是输出 10
程序二的结果是输出 10 和 11

为什么程序一不是11?
a=a++;这行代码执行完之后,a不是已经自增了吗
和程序二相比较,  求解

12 个回复

倒序浏览
a=a++;这行代码执行完之后。首先是先给a赋值为10.但是还没有自增。但是在内存中已经出现了。你可以写个循环就能看见值了。
回复 使用道具 举报
a++是先赋值后运算。。。。。
回复 使用道具 举报
我也不道
回复 使用道具 举报
一中结束时有个a=10的底层操作,可以理解为a=10和a=a+1,最后a的值看左边
回复 使用道具 举报
xclyijin 发表于 2015-7-26 15:48
a++是先赋值后运算。。。。。

我知道是先赋值后运算,所以在a=a++的下一行,a不是已经执行a++了吗?
回复 使用道具 举报
水佳伟 发表于 2015-7-26 21:44
一中结束时有个a=10的底层操作,可以理解为a=10和a=a+1,最后a的值看左边

我知道是先赋值后运算,所以在a=a++的下一行,a不是已经执行a++了吗?
回复 使用道具 举报
悲伤丿心 发表于 2015-7-26 22:01
我知道是先赋值后运算,所以在a=a++的下一行,a不是已经执行a++了吗?

先执行a++,a就等于11了,然后等于号左边有个a=10的赋值操作,输出的是左边的a的值
回复 使用道具 举报
水佳伟 发表于 2015-7-26 22:03
先执行a++,a就等于11了,然后等于号左边有个a=10的赋值操作,输出的是左边的a的值 ...

左边的a   右边的a  不是同一个吗
回复 使用道具 举报

程序一:
int a=10;
a=a++;
System.out.println(a);
程序二:
int a=10;                        
System.out.println(a++);
System.out.println(a);

程序一的结果是输出 10
程序二的结果是输出 10 和 11

为什么程序一不是11?
    因為先運行赋值 再運行++ 與程序二第一个相同道理
    程序二第二个 為 第一个a++運行結束 所以是11
回复 使用道具 举报
其实就是上边说的,设计到一个底层操作,记住就好,你也可以这样理解,那就是把a=a++看作两个a,右边的a确实是++了,而打印输出的则是等号左边的那个被先赋值为10的a,这个只是方便记忆的方法
回复 使用道具 举报
3174918418 发表于 2015-7-26 22:13
程序一:
int a=10;
a=a++;

a++;这个操作,是不是在这句代码 的下一句,就执行了a的自增,是吧?  那位什么下一句 会是10呢
回复 使用道具 举报
好难,上课被绕晕了:dizzy:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马