int x = 1984;
int y = 2001;
x ^= y ^= x ^= y;
System.out.println("x = " + x + "; y = " + y);

解决方案 »

  1.   

    x ^= y ^= x ^= y;--> x = x ^ (y = y ^ (x = x ^ y));
    //--------------------
    ^是异或地意思,一一比对二进制位,不同为1,否则为0
      

  2.   

    x ^= y ^= x ^= y;--> x = x ^ (y = y ^ (x = x ^ y));
    x为什么为0?
      

  3.   

    哦知道了,首先后面的y=x,然后x=x^y,其实就是x=x^x
      

  4.   

    x=x^y;
    y=x^y;
    x=x^y;VSx^=y^=x^=y;
      

  5.   

    不要误导x=x^y;
    y=x^y;
    x=x^y;《=/=》x^=y^=x^=y;
      

  6.   

    Code:
       0:   sipush  1984
       3:   istore_1
       4:   sipush  2001
       7:   istore_2
       8:   iload_1
       9:   iload_2
       10:  iload_1
       11:  iload_2
       12:  ixor
       13:  dup
       14:  istore_1
       15:  ixor
       16:  dup
       17:  istore_2
       18:  ixor
       19:  istore_1
      

  7.   

    这个不是c语言是java板块的,你怎么把这些搞到的?
      

  8.   

    x ^= y ^= x ^= y;
    逻辑或,非0即1
      

  9.   

    int x = 1984;
    int y = 2001;
    x ^= y ^= x ^= y;
    System.out.println("x = " + x + "; y = " + y);
    ------------------------------------
    a=x^y;
    b=y^a;
    c=a^b;
    代入:
    y=y^x^y=x;
    x=x^y^y^x^y=y;
    ------------------------------------
    结论:互换x,y;
      

  10.   

    #include <stdio.h>
    main()
    {
    int x = 255;
    int y = 0;
    x^=y^=x^=y;
    printf("x=%d,y=%d\n",x,y);
    }
    -------------
    测度正确。
      

  11.   

    先将x,y转化为二进制数,然后从x ^= y ^= x ^= y从右向左依次按0^0 = 0
    0^1 = 1,1^1 = 0,1^0 = 1公式进行计算,最后的到x=0,y=1984的结果
      

  12.   

    x ^= y;
    y ^= x;
    x ^= y;
      

  13.   

    x^=y^=x^=y;
    这个在c和java中表现不是一样的
      

  14.   

    x=x^y;
    y=x^y;
    x=x^y;x=x^y^x^y;
    y=x^y^y;
    所以最后运算结果是x=0,y=x(这的x是初始x值)=1984
    一句话 这个运算是从右向左的