黑马程序员技术交流社区

标题: 常见的java运算顺序问题? [打印本页]

作者: 陈原野    时间: 2013-3-21 14:06
标题: 常见的java运算顺序问题?
本帖最后由 陈原野 于 2013-3-21 19:18 编辑

设int x = 2 , y , z; ,执行z=y=x--;后变量Y的值是多少?集体讲解下(需要详细的运算步骤)

作者: 于腾飛    时间: 2013-3-21 14:29
int x = 2 , y , z; ,执行z=y=x--;
//z=y;   y=x--;
所以 y=2,  z=2, x=1;
x--是先把x原来的值2赋给y,然后再自减。
作者: qintoko    时间: 2013-3-21 14:32
x=1
y=2
z=2
x在没有变化的时候赋值给了y和z,所以y=z=2,x自减1,为1
作者: 王瑞    时间: 2013-3-21 14:37
y=2,  z=2, x=1
y=x-- 执行时,先把x的值赋给y,再自减,然后赋值给自己
如果y=--x,执行的时候先执行x自减赋值给自己,然后给赋值给y。

第一:--是单目运算符,优先级是高于=的,所以是先执行--。
第二,x--返回值是(x-1),是表达式而非变量
第三,--x的返回值是x,是变量

如果你理解了的话,可以试着解释一下
x++=y++
++x=++y
++x=y
呵呵


作者: 王瑞    时间: 2013-3-21 14:44
王瑞 发表于 2013-3-21 14:37
y=2,  z=2, x=1
y=x-- 执行时,先把x的值赋给y,再自减,然后赋值给自己
如果y=--x,执行的时候先执行x自 ...

不好意思,丢人了。我把c语言的一些语法带到java来了。
x++=y++
++x=++y
++x=y
这个貌似编译不通过。我再研究一下,不好意思了
作者: 黄玉昆    时间: 2013-3-21 19:09
楼主最好把代码写入代码框中,这样看着清晰些,谢谢




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