tail > distance这得到的是布尔量,和C不同,JAVA这个就是一个false或true的值,不能像C那样转成1,0那样进行运算,所以第一个if怎样都是false的。不能进行运算为什么还能得到false而不报错,我就不知道了。

解决方案 »

  1.   

    对不起对不起,是我自己测试时输入错了。
    结果没错的,
    ((tail > distance) ^ ((story * 2) == tail))的值是false;提问的帖子中错输成了:
    如果单独输出:System.out.println((tail>distance)^((story*2)==distance));结果是true。按照题中的数据来算是完全没有问题的。
      

  2.   

    直接忽略1Ftrue ^ true 等价于 1 ^ 1,两边相同,得到0,false
      

  3.   

    ^是异或运算符,只有当两端一个为true一个为false,这个表示式true ^ false或者false ^ true才会为true,其他情况为false。
      

  4.   

    (tail > distance):true
    ((story * 2) == tail) :true
    true ^ true : false
    第一个不会输出;
    (distance + 1 != tail):false
    ((story * 2) == distance):false
    false ^ false : false
    第二个也不会输出。
    异或运算,1,false ^ false : false
              2,true ^ true : false
              3,false ^ true : true
              4,true ^ false : true