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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

q1249143696

中级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© q1249143696 中级黑马   /  2015-9-17 21:06  /  386 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int x = 1,y = 1;

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

  为什么  x = 2,y = 2

12 个回复

倒序浏览
++在前在后运算不一样
回复 使用道具 举报
可以先输出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
回复 使用道具 举报
因为if(x++==2 & ++y==2)  ----x++==2 执行的结果为false,x=2,
回复 使用道具 举报
楼上是正解
回复 使用道具 举报
x++==2,这里=1不成立,便&与运算2边都执行后才返回,++y,y=2,结果是false,
回复 使用道具 举报
sniper170fly 发表于 2015-9-17 22:37
可以先输出System.out.println((x++==2)&(++y==2));这里返回的是false, x++==2是0,++y==2是1,0&1=0;所以i ...

楼上正解
回复 使用道具 举报
int i =1
i++==1 //true

你感受一下++i 和i++虽然最后打印出来的结果是一样的,但是在赋值和比较的时候不一样
回复 使用道具 举报
插兜 中级黑马 2015-9-18 12:58:03
9#
很强大的感觉
回复 使用道具 举报
楼上正解
回复 使用道具 举报
因为x++是先判断或者先赋值再加加   而++y是先加加再判断  所以前面是false 后面是true 做&判断 结果为false 不进入if后面的大括号中 所以x=2,y=2啊
回复 使用道具 举报
if(x++==2 & ++y==2)优先级++>==>&
回复 使用道具 举报
ln0491 发表于 2015-9-18 00:24
x++==2,这里=1不成立,便&与运算2边都执行后才返回,++y,y=2,结果是false,

正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马