黑马程序员技术交流社区

标题: 关于++、--运算符的一点冷知识,可能会面试 [打印本页]

作者: 哔哩哔哩    时间: 2015-4-18 23:29
标题: 关于++、--运算符的一点冷知识,可能会面试
int i=2;
i=i++;
System.out.println(i);
一定会有很多人给出的答案是:3
正确答案却是:2

解释:++或--运算会在最终的赋值操作之前完成,i=i++;这句代码会先判断出=右边的表达式最终的值是多少,这里最终应该赋值给左边的值是2;然后i++再进行自增;此时,在i++自增之前,右边的表达式已经得出了结果(要赋值给等号左边的i),并存储在临时的内存区域;i++后,i=3,但是最终赋值给i的仍然是2。

结论:自增或自减(i++或i--)运算会在最终赋值操作之前完成。

作者: 小鹏_sJQBO    时间: 2015-4-18 23:42
确实够冷。。。
作者: 君嘘    时间: 2015-4-19 03:58
你去c语言试试 i=3
作者: 黑色救护车    时间: 2015-4-19 11:50
多谢分享~
作者: bianzhiguo6    时间: 2015-4-19 15:26
哔哩哔哩  这是最基础的东西
作者: 哔哩哔哩    时间: 2015-4-19 18:53
君嘘 发表于 2015-4-19 03:58
你去c语言试试 i=3

是么,C不清楚,编译器不一样,即使是java编译器也有很多版本吧,结果是啥完全取决于编译器
作者: 哔哩哔哩    时间: 2015-4-19 18:58
bianzhiguo6 发表于 2015-4-19 15:26
哔哩哔哩  这是最基础的东西

刘意老师的视频没提到过这个,很容易漏掉,正常的出题都是m=i++这种格式,所以完全没考虑到自增跟赋值的先后顺序,我也是看到别人问老师这种题才注意到的
作者: duzhi409    时间: 2015-4-19 19:16
b=a++,毕老师的比喻就是a先出去玩,在回家吃饭
b=++a,a先在家吃饭,再出去玩
作者: 缤纷落叶    时间: 2015-4-19 19:32
同感.........
作者: 张乐    时间: 2015-4-19 19:53
不管最后懂不懂事怎样的一个顺序,反正是知道答案了,以后最起码会注意到.感谢楼主分享.
作者: lurenge    时间: 2015-4-19 19:54
先用后加  先加后用
作者: Zack    时间: 2015-4-19 21:30
本帖最后由 Zack 于 2015-4-19 21:32 编辑

没想到这样!
作者: doomsday    时间: 2015-4-19 22:22
System.out.println(i++);就是这意思
作者: bianzhiguo6    时间: 2015-4-20 13:55
哔哩哔哩 发表于 2015-4-19 18:58
刘意老师的视频没提到过这个,很容易漏掉,正常的出题都是m=i++这种格式,所以完全没考虑到自增跟赋值的 ...

好吧,赞一个。
作者: YQliang    时间: 2015-4-20 16:27
-30度.....
作者: 一个好人    时间: 2015-4-20 16:41
学习了。。。
作者: 燕赵之风    时间: 2015-4-20 18:23
冷但是很实用。
作者: 弃车保    时间: 2015-4-20 18:29
确实不知道

作者: xiongmaoren518    时间: 2015-4-20 18:33
这个虽然是基础的东西,但很容易搞错
作者: itheima_llt    时间: 2015-4-20 22:09
我喜欢,请大家鼓掌支持,谢谢
作者: 王善辉    时间: 2015-4-20 22:33
确实冷,我第一眼就看错了
作者: wangyu    时间: 2015-4-21 22:15
说实话我没看懂,但是这里的i++是没起作用吧,后面调用i他就是2,不是3
作者: 妖目    时间: 2015-4-21 22:40
涨姿势啦
作者: fanxia_2007    时间: 2015-4-21 22:45
基础知识一个。
作者: mxdeheima    时间: 2015-4-21 22:53
谢谢分享
作者: kayaking    时间: 2015-4-21 23:42
越基础越不简单
作者: 沙迦    时间: 2015-4-21 23:47
果然够冷的
作者: fenglinluomu    时间: 2015-4-21 23:50
感谢分享.
作者: 喻忠航    时间: 2015-4-21 23:50
你不说还真不知道,还真以为是3
作者: Chans_宇    时间: 2015-4-22 00:07
等同进行了两次赋值么?
作者: Chans_宇    时间: 2015-4-22 00:13
这个和字符串在方法中引用很相似,都是用临时变量指向,原来的变量指向都是一样的,在方法中多态形参也有这种情况
作者: 我想努力半年    时间: 2015-4-22 00:16
x=x++;这种很恶心。。
作者: yelebron    时间: 2015-4-22 00:30
嗯  不错  今晚刚好在为这道题困惑
作者: 只吃饭不洗碗    时间: 2015-4-22 09:12
真的是挺冷的呢 aaa
作者: 夕颜    时间: 2015-4-22 09:14
高深莫测,尽不知道




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