黑马程序员技术交流社区

标题: 关于运算的问题 [打印本页]

作者: 王怡然    时间: 2012-4-18 00:38
标题: 关于运算的问题

求解~难道是运算优先的顺序问题?
  1.         public static void main(String[] args)
  2.         {
  3.                 int x = 1,y = 1;

  4.                 if(x++==2 & ++y==2)//x++是等于2,左边为true啊,右边也是true啊,  那就会执行x=7的赋值动作啊,为什么结果是x=2,y=2?
  5.                 {
  6.                         x =7;
  7.                 }
  8.                 System.out.println("x="+x+",y="+y);

  9.         }
复制代码

作者: 张卯    时间: 2012-4-18 00:43
本帖最后由 张卯 于 2012-4-18 00:56 编辑

这问题也太那啥了吧,++在变量后面就是后运算,在前面就是先运算~
作者: wupingtanlu    时间: 2012-4-18 00:51
if(x++==2 & ++y==2)中的 x++是先赋值后运算的 而你后面的++y 才是先运算后赋值的。
你可以写一个
System.out.println(x++==2);//1
System.out.println(++y==2);//2
你去运行一下 1返回的是 false  2处返回的是ture  要先将你if里面的++运算先注释掉
作者: 王永旺    时间: 2012-4-18 00:54
x++==2;的执行结果是false,这个语句是先判断x的值,再进行自加动作的。
相当于x==2;
         x++;
的结果。

作者: 王德南    时间: 2012-4-18 07:21
if(x++==2 & ++y==2)这里的x在判断的时候其实x的植为1,因为x++是先判断后再自加的。所以此时x++==2为false,所以不会执行x=7.所以最后的结果打印为x=2,y=2
作者: 邵旭博    时间: 2012-4-18 11:41
因为if条件判断根本不成立,所以根本不执行x=7
x++=1不等于2所以if条件不执行
把x++换成++x就得到x=7 y=2了
作者: 黑马-刘昌文    时间: 2012-4-18 13:44
x++是先返回x的值再进行++运算,因此 x++==2 就相当于 1==2 当然是false,条件不成立,++y,是先进行++运算再返回Y的值,因此,y++==2是true的!
作者: 黑马—王宁    时间: 2012-4-18 13:56
==运算符比++运算符低。
先相当于(x++)==2 先运算里面,都运算完了,也就是自加了后,才和2比较是不是相当。




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