黑马程序员技术交流社区

标题: java基础运算问题,有点想不通透.求详解... [打印本页]

作者: 梦想的种子    时间: 2015-7-25 22:55
标题: java基础运算问题,有点想不通透.求详解...
   file:///C:\Users\Administrator.2013-20150718VR\AppData\Roaming\Tencent\Users\562533329\QQ\WinTemp\RichOle\3_V45BB)53HWAJL1PQ5YS1T.jpgfile:///C:\Users\Administrator.2013-20150718VR\AppData\Roaming\Tencent\Users\562533329\QQ\WinTemp\RichOle\3_V45BB)53HWAJL1PQ5YS1T.jpgfile:///C:\Users\Administrator.2013-20150718VR\AppData\Roaming\Tencent\Users\562533329\QQ\WinTemp\RichOle\3_V45BB)53HWAJL1PQ5YS1T.jpgfile:///C:\Users\Administrator.2013-20150718VR\AppData\Roaming\Tencent\Users\562533329\QQ\WinTemp\RichOle\3_V45BB)53HWAJL1PQ5YS1T.jpgfile:///C:\Users\Administrator.2013-20150718VR\AppData\Roaming\Tencent\Users\562533329\QQ\WinTemp\RichOle\3_V45BB)53HWAJL1PQ5YS1T.jpgint x = 4;
int y = (x++)+(++x)+(x*10);  
求y值,
我这答案70来的有点想不明白,觉得是60 啊...

作者: e咕噜    时间: 2015-7-25 23:06
应该是4+6+6*10
作者: e咕噜    时间: 2015-7-25 23:08
X++,先运算再++,所以是4,
++X,先++再运算,因为前面已经++过了,所以现在x是5,++后是6
作者: boboyuwu    时间: 2015-7-25 23:08
首先()优先级最高  先算()里面的(x++)=4  x变成5 (++x)=6 x变成6  (x*10)=60  三个加一下 就是70
作者: longbao    时间: 2015-7-25 23:29
x=4,(x++)先参与运算,也就是这一项是4,然后x变为5,接着到(++x),先自增,再参与运算,x变为6,这一项就是6,然后就是(6*10),所以结果是70
作者: 真实姓名被注册    时间: 2015-7-25 23:36
好像不同语言对这个语句的结果都不同,java是表达式取值后,马上就自增,有的是表达式取值后,到整个语句执行完再自增
作者: wayonEmes    时间: 2015-7-25 23:48
x++是先参与运算,再自增;++x是先自增,再参与运算,所以(x++)中x是4,整体是4,但是执行自增后x变成了5,(++x)这里面的x是刚才的5,所以(++x)整体变成了6,x也变成了6,(x*10)=60,所以这个运算等价于:4+6+(6*10)=70
作者: a12366456    时间: 2015-7-25 23:57
只要清楚表达式的值和表达式里面变量的值是相区别的,这个题就知道了。三个括弧里面是三个表达式,x++这个表达式的值是x自增之前的值,++x这个个表达式的值是自增之后的值




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