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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 窗外的雪儿飞 中级黑马   /  2015-8-22 22:35  /  891 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天朋友问我:
int x =5;
x=x+(x++)+(++x);
后x的值是多少?
我看了之后口算了一下告诉他19,他说不是的,是17,于是我蛋疼的求证了一下。.

13 个回复

倒序浏览
应该没人会这么无聊吧!
回复 使用道具 举报
x=5+(这个时候是先运算再加加,所以原式加上5,加加之后x变为6)+(x已经是6,先加加再运算,所以x变成7,7参与运算原式加7)=17
回复 使用道具 举报
int x =5;
x=x+(x++)+(++x);
该题目运用到了算术运算符的知识。
++在前,先自身+1,然后再提取数据进行运算;
++在后,先提取数据进行运算,然后再自身+1;

x=x+(x++)+(++x)=5+5+7=17
回复 使用道具 举报
shdosh 发表于 2015-8-22 22:40
应该没人会这么无聊吧!

因为我最近一期刚学的Java基础班,他考验我有没有用心学,现在想想逻辑上的弯有的时候还转不过来
回复 使用道具 举报
樱花飘过 发表于 2015-8-22 22:40
x=5+(这个时候是先运算再加加,所以原式加上5,加加之后x变为6)+(x已经是6,先加加再运算,所以x变成7,7参与运 ...

内部的实现不是这样子?
回复 使用道具 举报
樱花飘过 发表于 2015-8-22 22:40
x=5+(这个时候是先运算再加加,所以原式加上5,加加之后x变为6)+(x已经是6,先加加再运算,所以x变成7,7参与运 ...

大概看懂了,应该就是楼下我的演算吧,谢谢啦
回复 使用道具 举报
徐鹏辰 发表于 2015-8-22 22:52
int x =5;
x=x+(x++)+(++x);
该题目运用到了算术运算符的知识。

太感谢啦,已经整明白。
回复 使用道具 举报
是17吧 这是那的面试题
回复 使用道具 举报
窗外的雪儿飞 发表于 2015-8-22 23:29
内部的实现不是这样子?

恩是这样 的
回复 使用道具 举报
17吧  x++是先参加运算在自增,而++x是先自增在参加运算  x= 5+5(参加玩运算变成⑥)+7(6+1)= 17
回复 使用道具 举报
哦 这个问题我也有疑惑  今天知道了
回复 使用道具 举报
sunsteam 发表于 2015-8-23 22:44
哦 这个问题我也有疑惑  今天知道了

嘿嘿,大家一起学习。
回复 使用道具 举报
答案是17,x++是先参加运算,然后再自增1,所以前面两项结果是10,此时x变成了6;++x是先自增1再参与运算,所以x成了7,加起来的结果就是17
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马