黑马程序员技术交流社区

标题: 代码题 [打印本页]

作者: q1249143696    时间: 2015-9-17 21:06
标题: 代码题
int x = 1,y = 1;

if(x++==2 & ++y==2)
{
        x =7;
}
System.out.println("x="+x+",y="+y);  

  为什么  x = 2,y = 2
作者: zhonggege1234    时间: 2015-9-17 21:48
++在前在后运算不一样
作者: sniper170fly    时间: 2015-9-17 22:37
可以先输出System.out.println((x++==2)&(++y==2));这里返回的是false, x++==2是0,++y==2是1,0&1=0;所以if条件并不成立,但是执行到System.out.println("x="+x+",y="+y);  之后,x,y的值都自增了1.所以返回值都是2
作者: huiyifan    时间: 2015-9-18 00:17
因为if(x++==2 & ++y==2)  ----x++==2 执行的结果为false,x=2,
作者: sxwnzbn    时间: 2015-9-18 00:22
楼上是正解
作者: ln0491    时间: 2015-9-18 00:24
x++==2,这里=1不成立,便&与运算2边都执行后才返回,++y,y=2,结果是false,
作者: liufeibo    时间: 2015-9-18 09:51
sniper170fly 发表于 2015-9-17 22:37
可以先输出System.out.println((x++==2)&(++y==2));这里返回的是false, x++==2是0,++y==2是1,0&1=0;所以i ...

楼上正解
作者: 枕草虫    时间: 2015-9-18 11:15
int i =1
i++==1 //true

你感受一下++i 和i++虽然最后打印出来的结果是一样的,但是在赋值和比较的时候不一样
作者: 插兜    时间: 2015-9-18 12:58
很强大的感觉
作者: qq491786119    时间: 2015-9-18 23:17
楼上正解
作者: 天之饺子    时间: 2015-9-18 23:21
因为x++是先判断或者先赋值再加加   而++y是先加加再判断  所以前面是false 后面是true 做&判断 结果为false 不进入if后面的大括号中 所以x=2,y=2啊
作者: 瑞雪雄起    时间: 2015-9-18 23:43
if(x++==2 & ++y==2)优先级++>==>&
作者: 1406046710    时间: 2015-9-19 21:19
ln0491 发表于 2015-9-18 00:24
x++==2,这里=1不成立,便&与运算2边都执行后才返回,++y,y=2,结果是false,

正解




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