黑马程序员技术交流社区
标题:
关于运算的问题
[打印本页]
作者:
王怡然
时间:
2012-4-18 00:38
标题:
关于运算的问题
求解~难道是运算优先的顺序问题?
public static void main(String[] args)
{
int x = 1,y = 1;
if(x++==2 & ++y==2)//x++是等于2,左边为true啊,右边也是true啊, 那就会执行x=7的赋值动作啊,为什么结果是x=2,y=2?
{
x =7;
}
System.out.println("x="+x+",y="+y);
}
复制代码
作者:
张卯
时间:
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