A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王怡然 黑马帝   /  2012-4-18 00:38  /  1883 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


求解~难道是运算优先的顺序问题?
  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.         }
复制代码

7 个回复

倒序浏览
本帖最后由 张卯 于 2012-4-18 00:56 编辑

这问题也太那啥了吧,++在变量后面就是后运算,在前面就是先运算~
回复 使用道具 举报
if(x++==2 & ++y==2)中的 x++是先赋值后运算的 而你后面的++y 才是先运算后赋值的。
你可以写一个
System.out.println(x++==2);//1
System.out.println(++y==2);//2
你去运行一下 1返回的是 false  2处返回的是ture  要先将你if里面的++运算先注释掉
回复 使用道具 举报
x++==2;的执行结果是false,这个语句是先判断x的值,再进行自加动作的。
相当于x==2;
         x++;
的结果。
回复 使用道具 举报
if(x++==2 & ++y==2)这里的x在判断的时候其实x的植为1,因为x++是先判断后再自加的。所以此时x++==2为false,所以不会执行x=7.所以最后的结果打印为x=2,y=2
回复 使用道具 举报
因为if条件判断根本不成立,所以根本不执行x=7
x++=1不等于2所以if条件不执行
把x++换成++x就得到x=7 y=2了
回复 使用道具 举报
x++是先返回x的值再进行++运算,因此 x++==2 就相当于 1==2 当然是false,条件不成立,++y,是先进行++运算再返回Y的值,因此,y++==2是true的!
回复 使用道具 举报
==运算符比++运算符低。
先相当于(x++)==2 先运算里面,都运算完了,也就是自加了后,才和2比较是不是相当。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马