黑马程序员技术交流社区
标题:
运算符判断的问题
[打印本页]
作者:
doyxy
时间:
2014-4-27 11:45
标题:
运算符判断的问题
本帖最后由 doyxy 于 2014-4-28 08:30 编辑
复习看到一题 ,我的理解和实际运行不一致,是哪里错了呢?
int x = 0, y = 1;
if (++x == y-- & x++ == 1 || --y == 0)
// 1 == 0 & 2 == 1 || -1==0 我的理解
// false&false||false
System.out.println("x=" + x + ",y=" + y);// x=2,y=0
else
System.out.println("y=" + y + ",x=" + x);
复制代码
作者:
doyxy
时间:
2014-4-27 12:17
本帖最后由 doyxy 于 2014-4-27 12:29 编辑
重新思考了一下,大家看是这样的吗?发现还是有问题,y为什么是0呢?
|| 双或 前面为true后面不运行.... 终于ok了 这些运算符真是麻烦
//++x是先加了再运算,x++是先运算再++,那么
// ++x == y-- 即 1==1 (x=1,y=0,但是y先比较了再--)
// x++ == 1 即 1==1 (x=2,y=0)
// --y == 0 即 -1==0 (x=2,y=-1)
// true&true || false 结果为true
int x = 0, y = 1;
if (++x == y-- & x++ == 1 || --y == 0)
System.out.println("x=" + x + ",y=" + y);// x=2,y=0
else
System.out.println("y=" + y + ",x=" + x);
作者:
eternallove
时间:
2014-4-27 14:59
实际我有一个很好的方法容易记住++x和x++的规律:
作者:
eternallove
时间:
2014-4-27 15:08
实际我有一个很好的方法容易记住++x和x++的规律:
当++在左边的时候,从左往右看先遇到的是++,也就是说先变的值是整个表达式的值,后边的是x的值。,
当++在右边的时候,从左往右看先遇到的是X,也就是说先变的值是x的值,后变的值是整个表达式的值。
作者:
你为谁归来
时间:
2014-4-27 15:59
算术优先级的问题,你好好看下就好了。
作者:
和静清寂
时间:
2014-4-27 19:55
额,y是等于0的!
原因: if (++x == y-- & x++ == 1 || --y == 0)
初始化时x=0,y=1;
①++x == y-- ++x时=1(此后x=1), y--时y还等于1(此后y=0) ++x==y--结果为true
②x++==1 x++结果为1(此后x=2) x++==1结果为true
以上是楼主的分析,都是正确的!但是 --y == 0结果为false,--y的动作不与前面的式子参与运算!(就是等于这一步没有,为空!)
所以y=0成立!
楼主可以
if (++x == y-- & x++ == 1 )
System.out.println("x=" + x + ",y=" + y);// x=2,y=0
试一下!我说的对不对!欢迎交流!也让我复习了一个知识点!
作者:
小马初长成
时间:
2014-4-28 00:14
输出的结果为:
第1个是对的
第2个是对的
public class Test
{
public static void main(String[] args)
{
int x=0,y=1;
if(++x==y--)
{//这里先执行++x,则x的值为1,再与y比较成立,执行if中语句,然后执行y--
System.out.println("第1个是对的");
}
if(x++==1)
{//这里x的值变成了x=1,先比较后执行x++,条件成立执行if中语句
System.out.println("第2个是对的");
}
if(--y==0)
{//以上执行y--后这里y的值变为0先执行--后变为-1所以不成立,if中语句不执行
System.out.println("第3个是对的");
}
}
}
复制代码
作者:
小马初长成
时间:
2014-4-28 00:17
小马初长成 发表于 2014-4-28 00:14
输出的结果为:
第1个是对的
第2个是对的
修正一下:
//以上执行完毕后这里x的值变成了x=1,先比较后执行x++,条件成立执行if中语句
//以上执行--y完毕后这里y的值变为0先执行--y后变为-1所以不成立,if中语句不执行
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2