黑马程序员技术交流社区
标题:
Java中的自加运算和自减运算
[打印本页]
作者:
猎鹰tianya
时间:
2014-1-4 18:44
标题:
Java中的自加运算和自减运算
本帖最后由 猎鹰tianya 于 2014-1-5 00:33 编辑
class Test
{
public static void main(String[] args)
{
int x=1,y=3,z;
z=y--/++x;
System.out.println(z);
}
}
复制代码
结果是1,很不理解啊!
不是说y--是先把y的值放临时存放起来,然后给y减1,参加运算的是y原来的值吗?
可是结果是1,我解释不了了,求解!!!:Q
作者:
a844468138
时间:
2014-1-4 18:48
z=y--/++x;
这时y--的值还是原值3 会在用过之后才会-- 成为2
++x是先++也就变成了2
所以就是 z=3/2;
最后结果也就是1了
作者:
高亮亮
时间:
2014-1-4 18:56
楼上,那个你的答案应该是错的吧.
class Test
{
public static void main(String[] args)
{
int x=1,y=3,z;
z=y--/++x;
System.out.println(z);
}
}
复制代码
对于z=y--/++x.是这样计算的.
先计算y--,这里楼上解释错了,自减在前在后的区别在于赋值.你这里是将自减后结果拿来运算,所以不管在前在后这里的结果都是2.
再计算++x,这里计算的结果为2.
最后z=2/2.为1.
并不是3/2.
作者:
猎鹰tianya
时间:
2014-1-4 19:12
本帖最后由 猎鹰tianya 于 2014-1-6 10:00 编辑
高亮亮 发表于 2014-1-4 18:56
楼上,那个你的答案应该是错的吧.
:P呵呵,谢谢你的解答!
嘿嘿,在你的提醒下,我做了个测试,然后明白了,代码如下,结果为2,希望对你的理解也有帮助!:P:D
class Test
{
public static void main(String[] args)
{
int x=1,y=4,z;
z=y--/++x;
System.out.println(z);
}
}
复制代码
作者:
李兴
时间:
2014-1-4 19:12
int x=1,y=3,z;
z=y--/++x;
因为++,--自增自减运算符的优先级大于/的优先级,所以先执行++,--运算,
y-- 为后自增,先使用变量y的值,除法运行完后再自减1,
++x为前自增,x先自加1,后运行除法
所以运行过程等效于:
x=x+1;z=y/x;y--;
这就是程序的运行顺序
z的结果为3/2等于1
作者:
高亮亮
时间:
2014-1-4 19:18
高亮亮 发表于 2014-1-4 18:56
楼上,那个你的答案应该是错的吧.
嗯,是我疏忽.自己绕进去了.
的确是不管怎么样,y都会变成2,但是拿来计算的值是自增自减前的3.
楼上那位兄弟,对不住了.
吸取教训
作者:
周志彬
时间:
2014-1-4 19:49
int x=1,y=3,z;
z=y--/++x;
y--结果是3
x++结果是2
3/2=1 因为你的基础数据类型是int类型 如果数据类型是double的话答案就是1.5了
y--是先运算 后自减
++x是先自加 后运算
~~!奋斗
作者:
杨丽静
时间:
2014-1-4 22:37
x y z是int类型的整数,参加运算的y的值是3,x的值是2,3/2=1.5又因为z是整型,所以z=1 我一直是这么理解的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2