黑马程序员技术交流社区

标题: 关于x=x+(x++)+(++x)问题 [打印本页]

作者: 窗外的雪儿飞    时间: 2015-8-22 22:35
标题: 关于x=x+(x++)+(++x)问题
今天朋友问我:
int x =5;
x=x+(x++)+(++x);
后x的值是多少?
我看了之后口算了一下告诉他19,他说不是的,是17,于是我蛋疼的求证了一下。.
作者: shdosh    时间: 2015-8-22 22:40
应该没人会这么无聊吧!
作者: 樱花飘过    时间: 2015-8-22 22:40
x=5+(这个时候是先运算再加加,所以原式加上5,加加之后x变为6)+(x已经是6,先加加再运算,所以x变成7,7参与运算原式加7)=17
作者: 徐鹏辰    时间: 2015-8-22 22:52
int x =5;
x=x+(x++)+(++x);
该题目运用到了算术运算符的知识。
++在前,先自身+1,然后再提取数据进行运算;
++在后,先提取数据进行运算,然后再自身+1;

x=x+(x++)+(++x)=5+5+7=17

作者: 窗外的雪儿飞    时间: 2015-8-22 23:19
shdosh 发表于 2015-8-22 22:40
应该没人会这么无聊吧!

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

内部的实现不是这样子?

作者: 窗外的雪儿飞    时间: 2015-8-22 23:31
樱花飘过 发表于 2015-8-22 22:40
x=5+(这个时候是先运算再加加,所以原式加上5,加加之后x变为6)+(x已经是6,先加加再运算,所以x变成7,7参与运 ...

大概看懂了,应该就是楼下我的演算吧,谢谢啦
作者: 窗外的雪儿飞    时间: 2015-8-22 23:32
徐鹏辰 发表于 2015-8-22 22:52
int x =5;
x=x+(x++)+(++x);
该题目运用到了算术运算符的知识。

太感谢啦,已经整明白。
作者: 天使也掉毛    时间: 2015-8-23 02:12
是17吧 这是那的面试题
作者: 樱花飘过    时间: 2015-8-23 21:46
窗外的雪儿飞 发表于 2015-8-22 23:29
内部的实现不是这样子?

恩是这样 的
作者: liuguodong    时间: 2015-8-23 22:26
17吧  x++是先参加运算在自增,而++x是先自增在参加运算  x= 5+5(参加玩运算变成⑥)+7(6+1)= 17
作者: sunsteam    时间: 2015-8-23 22:44
哦 这个问题我也有疑惑  今天知道了
作者: 窗外的雪儿飞    时间: 2015-8-23 22:55
sunsteam 发表于 2015-8-23 22:44
哦 这个问题我也有疑惑  今天知道了

嘿嘿,大家一起学习。
作者: lf900827    时间: 2015-8-23 23:12
答案是17,x++是先参加运算,然后再自增1,所以前面两项结果是10,此时x变成了6;++x是先自增1再参与运算,所以x成了7,加起来的结果就是17




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