你定两个值int x,y;
将他们交换:
一般做法:
int t;
t=x;
x=y;
y=t;现在要你不申请任何空间,交换他们的值。

解决方案 »

  1.   


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

  2.   


     int x=2,y=3;
     x=y+(y=x)*0;
      

  3.   

    2=3+(3=2)*0
    x=y+(y=x)*0
    这样明白吧。
      

  4.   

    不明白!(y=x)之后y的值已经变成x了。x=y+0应该x的值应该还是x啊。
    按照运算次序,(y=x)总是先运行的吧!
      

  5.   

    总结
    public class Test1 { static int a = 1, b = 2; /**
     * 两个值互换,最常用的方法
     */
    public static void change1() {
    int t = 0;
    t = a;
    a = b;
    b = t;
    System.out.println("a= " + a + "           b= " + b);
    } /**
     * 这个方法,通过+,-实现
     */
    public static void change2() {
    a = a + b;
    b = a - b;
    a = a - b;
    System.out.println("a= " + a + "           b= " + b);
    } public static void change3() {
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    System.out.println("a= " + a + "           b= " + b);
    } public static void change4() {
    a = b + (b = a) * 0;
    System.out.println("a= " + a + "           b= " + b);
    } public static void main(String[] args) {
    // change1();
    // change2();
    change3();
    }}
      

  6.   


    应该是x=3+(y=2)*10;这样看起来更直观一点.8楼确实nb
      

  7.   

    Java codeint x=2,y=3; 
      x=y+(y=x)*0; 要是按下面这样写结果就不对了。Java codeint x=2,y=3; 
      x=(y=x)*0+y; 
      

  8.   

    X=X^Y; x等于x的y次方;
    Y=Y√X; y等于x的y次根;
    X=LOGyX; x等于log以y为底;看不懂不要怪我,这个方法应该挺多滴。
      

  9.   


    从左到右执行,先将y值提出等于3,然后执行(y=x),此时y等于2,最终x=3,不知道这样对不对
      

  10.   

    x ^= y ^= x ^= y
      

  11.   

    y+=-(x+=y-x)
    觉得这样也行  没测试过 口算的
      

  12.   

    X=X^Y; x等于x的y次方; 
    Y=Y√X; y等于x的y次根; 
    X=LOGyX; x等于log以y为底; 这个方法不可行 因为要是 x y 不是整数 那计算出来的结果 会有差异
      

  13.   

    操作符的操作数是从左向右求值的。为了求表达式 x ^=
    expr 的值,x 的值是在计算expr 之前被提取的,并且这两个值的异或结果被赋
    给变量x// Java 中x^= y^= x^= y 的实际行为
    int tmp1 = x ; // x 在表达式中第一次出现
    int tmp2 = y ; // y 的第一次出现
    int tmp3 = x ^ y ; // 计算x ^ y
    x = tmp3 ; // 最后一个赋值:存储x ^ y 到 x
    y = tmp2 ^ tmp3 ; // 第二个赋值:存储最初的x 值到y 中
    x = tmp1 ^ y ; // 第一个赋值:存储0 到x 中-----------摘自java解惑
      

  14.   

    咱也来凑个热闹!!!    int a,b;
        b=a+b;
        a=b-a;
        b=b-a;
      

  15.   


    拍一下板砖, 2=3+(3=2)*0  这种解释永远是不正确的,
    代数(X,Y,Z等)和常数(1,2,3等)不一样 怎么能用3=2的式子呢,请自省一下。 
    只能说理解得不够深!
      

  16.   

    应该是 y 与(y=x)中的y,这两个已经不是同一块存储区域了,应是另辟了一块内存,老紫竹,这样的解释对吗?
      

  17.   

    x=y+(y=x)*0; 
    这个方法我不太理解???
    不过两数交换的方法可真多呀
    学习了!!!!