已知 int y, x=5 ;执行语句y= -x--;后 y 的值是 求解答!!!!!

已知 int y, x=5 ;执行语句y= -x--;后 y 的值是
已知 int x=5;执行语句x - = -- x;后x的值是
已知 int x=6; x+=x-=x*x ; 语句后,x 的值为
已知 int x=5, y; 则执行 y=(++x)+(x――)后的y 值是
求这几道题的解答过程,我要详细的!!!!谢谢!

其实就是一个Java 操作符 优先级的顺序
另外要区分 i++ 和 ++i 的区别
第一个y= -x--; 这时候的 y= -5 y= -(x--); 这时候x在这个表达式里面是5,执行完这个语句后就变成6了,就像y= -x; x=x-1; 两个语句,所以输出-5

第二个是x - = -- x; 这个拆分下来是
x=x-1=4; (就是--x)
x=x-4 =1;
所以输出1;

第三个 根据运算从右往左开始 首先计算等式右边
首先是x-=x*x; 执行后得到结果 -30 保存在一个临时变量里面tmp 这个实行完成后就变成 x+= -30; 也是就x = x + -30 ; x 还是原值6 带进去后. 就是 -24 ;
第四个
y=(++x)+(x--); 拆分下
就是
x = x +1; (++x) 这时候 x是6 保存到 替换掉 ++x的值 也就是 6
然后是 y = 6 +6 ;(因为这时候x--没有改变值 所以x是6)
最后是 x = x - 1; (x--在语句后才改变值)
最后 输出12追问

第二题是0,第三题是-60怎么解释???

追答

不是老师给答案是什么.. 就按哪里分析 0.0
不同的编译方式 会有不一样的结果的.
我刚在Java 上跑了下 是这个结果.

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-18
1、y的值-5
2、x=1(x - = -- x相当于x= x-(--x)
3、x =-24(上面表达式相当于x=x+(x=x-x*x))
4、y=12 ++x时候,x变成6 所以x--的值也是6
--,++在前面先执行-1或者+1,在后面就后执行
第2个回答  2012-06-18
已知 int y, x=5 ;执行语句y= -x--;后 y 的值是 -5
应为单目运算符-的优先级高于- - ,那么先执行-,所以,y = -5,而x=4;
已知 int x=5;执行语句x - = -- x;后x的值是 1
x- = - -x; 先执行(- - x)为4,x=5-4=1;
已知 int x=6; x+=x-=x*x ; 语句后,x 的值为 -24
x*x = 36,x-36 =-30;
x+(-30) = 6+(-30) = -24
已知 int x=5, y; 则执行 y=(++x)+(x――)后的y 值是 12
y=(++x)+(X - -)
y=6+6 = 12
第3个回答  2012-06-18
解 :
1 y= - 5 理由y= -x-- =-(x--) = - 5
2 x - = -- x 化简为 x =x-( -- x) 为 5-4 =1 y =1
3 x+=x-=x*x 从右向左化简 x-=x*x 得x=x -x*x 为 6-6*6=30 , x+=x化简为 x=x+x 则 x=30+30 =60
4 y=(++x)+(x――)=6+5 =11
最后一个不知道对不对
注 ++与+是同级优先 遵循右结合新 例:+i++ 其实等于 +(i++) .。 对于i++ 运算时数不变 但是之后 i 是增大1的,又 比如第1题“已知 int y, x=5 ;执行语句y= -x--;”执行语句后 x的值是4。追问

老师给的答案,第二题是0,第三题是-60,第四题是12.

本回答被网友采纳
相似回答