黑马程序员技术交流社区

标题: a=a++ [打印本页]

作者: 寰宇天侠    时间: 2015-8-30 23:22
标题: a=a++
int a=1;
a=a++;
System.out.println(a);
a输出是多少??
作者: 寰宇天侠    时间: 2015-8-30 23:37
答案是1  是1  是1啊   没有人会吗。。。
作者: 代晃    时间: 2015-8-30 23:39
你这题的答案是1
作者: ybbh182    时间: 2015-8-30 23:40
11111111111111
作者: 寰宇天侠    时间: 2015-8-30 23:47
答案知道 原理不知道。。
作者: 牛小爽    时间: 2015-8-31 00:11
int a=1;
a=a++;
System.out.println(a);

a = a++  可以看成两步,第一步系统定义一个变量temp,temp=1,第二步是后自增运算,a=a+1。但是第一步操作时,temp的值赋给了a,此时a就是1,将第二步 后自增赋值的运算给覆盖掉了,也就是根本没有进行后自增运算,只是将1赋值给了a。
作者: 寰宇天侠    时间: 2015-8-31 21:26
牛小爽 发表于 2015-8-31 00:11
int a=1;
a=a++;
System.out.println(a);

原来如此!~
作者: sunw    时间: 2015-8-31 22:21
a输出是多少??  2   
作者: XLX    时间: 2015-8-31 22:45
int a=1;
a=a++;
System.out.println(a);
本人新手,错了还请大神指教,++后置到a=a的后面程式会自动先执行a=a的指令,所以输出的a永远等于一,把a=去掉,或者改成a=++a,结果就会截然不同了。

作者: 不忘初心、    时间: 2015-8-31 23:08
1,因为俩个过程,先吧右边a赋给左边a.
作者: forjunjian    时间: 2015-8-31 23:23
居然是1,受教了
作者: a6658637    时间: 2015-8-31 23:31
输出的值是1.因为先运算在自增
作者: 方育伟    时间: 2015-8-31 23:42
执行时,++在后面,所以虚拟机先用一个变量记住a的初始值,然后执行a++的操作,也就是执行a=a+1;也就是a++先给a赋值,此时a=2。然后再执行a=这个赋值给a的操作,但是之前虚拟机自定义的变量记住的值是1,所以就把1 的值赋给了a,最后a=1。

应该是跟内存结构有关了吧,先后出栈的问题。

小弟菜鸟,有错勿喷。。





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