class Zeta{
    public static void main(String[] args){
         int x = 1;
         if((4>x)^((++x + 2)>3)) x++;
         if((4>++x)^!(++x ==5))x++;
         System.out.println(x);
    }
}结果是4,    我对^和^!不知道怎么理解,请教大神

解决方案 »

  1.   

    int x = 1;
    if((4>x)^((++x + 2)>3)) x++; 
    // 4 > (x=1) true
    // (++x (x=2)) + 2 > 3 true
    //true ^ true = false  x++ 不执行
    // 此刻 x = 2;
    if((4>++x)^!(++x ==5))x++;
    // 4 > ++x (x=3) true;
    // !(++x (x=4) == 5) true;
    //true ^ true = false  x++ 不执行
    System.out.println(x(x = 4));
      

  2.   

    ^!这个不是运算符号。
    !是对(++x ==5)取反。
    ^是异或操作符
    1^0    =1
    1^1    =0
    true^true  =false
    true^false =true;
      

  3.   

    ^是异或的操作符,即,相同为0(false),不同为1(true).class Zeta{
      public static void main(String[] args){
      int x = 1;
      if((4>x)^((++x + 2)>3)) x++;   //4>1 true, ++x,x变为2,2+2=4>3也是true,相同为false。
      if((4>++x)^!(++x ==5))x++;    //++x,x变为3, 4>3  true;再++x,x变成4,4==5  false,  单纯异或,此处应该是true,但是此处有"!",进行取反的操作,又变成false,所以也不执行。
      System.out.println(x);
      }
    }
      

  4.   

    异或(^):要比较的两个数如果是相同的,那么结果就为false,如果两个数不相同,那么结果就为true。
    ^!  这里的“!”不是和^连在一起用,是和后面的表达式连用。即!(++x ==5),最好是将表达式与运算符用空格隔开,这样读起来比较容易懂。
      

  5.   

    结果就是4嘛
     ^ 和 !^是位运算符  一般是在正则表达式里用的比较多
     true ^ false = true   异或