黑马程序员技术交流社区

标题: 关于今天上java基础课说到的一道题,大家都来讨论讨论. [打印本页]

作者: rabbitguy    时间: 2016-4-17 00:50
标题: 关于今天上java基础课说到的一道题,大家都来讨论讨论.
int a=8;
a = a++;
大家打印结果试试,保证想不到.

不过很难解释,哪位大神能来给个好的解释?
作者: 女神之泪    时间: 2016-4-17 07:22
直接a++,不要等号了。  这样先赋值了是吧,然后又给加一,那到底输出8还是9不能判断,是吧
作者: 杨伟乔    时间: 2016-4-17 10:23
要考虑到++参与运算时候使用,别想着赋值
作者: 邹凯    时间: 2016-4-17 15:14
a++ 是啊先参加程序的运行在 赋值的所以你这里a值没变  而++a 是先自加 在赋值的
作者: rabbitguy    时间: 2016-4-18 22:40
有兴趣参与的不妨试试,结果估计会让你们惊奇.
作者: 逆击穹霄    时间: 2016-4-18 23:26
这个好解释啊 先是把A付给A 然后自加 但是自加后并没有再进行附值
作者: Yoyoqiu    时间: 2016-4-18 23:34
经典面试题   建议百度一下 与java的 JVM底层 有关   前面有 i= i++;的帖子  楼主可以看看
作者: keyingchang0909    时间: 2016-4-18 23:42
这道题跟底层操作有关系,要点在于执行的时候是从右向左执行的.
作者: liudh1    时间: 2016-4-18 23:57
++在后面,先复制在参与运算:所以a=8
作者: 张宪达    时间: 2016-4-19 00:25
a=8,不对吗?
作者: lidandan    时间: 2016-4-19 15:03
a=8                  
作者: lin6773084    时间: 2016-4-19 16:38
a = 8 赋值后再自增
作者: a382541804    时间: 2016-4-19 16:57
我就想知道a=8对不对
作者: rabbitguy    时间: 2016-4-22 01:23
执行结果是a=8,大家都试过了吧,
作者: xzy645181797    时间: 2016-4-22 07:42
  我想楼主提出的这个观点就是在于一种思维的问题。在编程时 特别像我们初学者 还没有把平时生活中的思维转换到编程的思维方式 这里的 a=a++ 用平时生活中的思维 我们会把它看成 a = (a++) 但真正编程的思维 应该是 把赋值好 右边的a 赋值给 赋值号 左边的 a 这个动作做完之后 a再 ++ 所以打印结果是 ++ 之前的结果 也就是 a = a
  这让我想到了很久以前看到的一个笑话
  话说妻子让程序员老公去买苹果 原话是这样:“老公,待会你出去买两斤苹果回来吧,要是碰见卖西瓜的,买一个。” 于是程序员老公就出去了。过了一会老公拿着一个苹果回来了。妻子他问什么只买了一个苹果,老公说因为碰见卖西瓜的了。


作者: 小红花    时间: 2016-4-22 10:11
先运行,在自增
作者: huaihkiss    时间: 2016-4-22 11:50
是8是吧  后自加显示完再赋值给x的




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