int x=6,y=8;
x+=y+=x+=y;
System.out.println("x"+x+" y"+y);
输出结果是28,22
不知道是怎么算出来的,求解!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    有点疼,分给我吧,貌似没人敢那么用。
    还是说下过程,我觉得是这样,不对别拍砖
    x+=y+=x+=y;
    int x=6,y=8;
    x = 6+(y+=x+=y)
    x = 6 +(y = 8+(x+=y))
    x = 6 +(y = 8+(x = 6 + 8))
    x = 6 +(y = 8 + 14)
    所以 x = 28 y = 22;
      

  2.   

    java和C不一样,我觉得是这样,不对荒淫拍砖x+=y+=x+=y;
    x+=(y+=(x+=y));
    x = x + (y += (x += y))
    x = x + (y = y + (x += y))
    x = x + (y = y + (x = x + y))
    所以
    x 为 x + y + x + y 也就是 6 + 8 + 6 + 8 = 28;
    y 为 y + x + y  也就是 8 + 6 + 8 = 22;
      

  3.   

    我出一道题
    int x=6,y=8;
    x ^= y ^= x ^= y;
    问 x 和 y 为多少?
      

  4.   

    根据上面的过程得出推论
    x^=y^=x^=y;
    x^=(y^=(x^=y));
    x = x ^ (y ^= (x ^= y))
    x = x ^ (y = y ^ (x ^= y))
    x = x ^ (y = y ^ (x = x ^ y))
    所以
    x 为 x ^ y ^ x ^ y 也就是 6 ^ 8 ^ 6 ^ 8 = 0;
    y 为 y ^ x ^ y 也就是 8 ^ 6 ^ 8 = 6;请问上面的做法对吗?如果是错的,请找出原因。
      

  5.   

    in java解惑 一书
    // 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中
      

  6.   

    看看下面的代码 为什么结果会不一样,你就会明白
    /** Author <Dengxu>
      * Bug Report To <e-mail:[email protected]>
      * Blogs <http://blog.csdn.net/dengxu11>
    **********************************************/public class uc {
        
        public uc() {
        }    public static void main(String[] args) {
            int x = 6, y = 8;
            x += y += x += y;
            System.out.println("x = " + x + ", y = " + y);
        }
    }
    /* Author <Dengxu>
     * Bug Report To <e-mail:[email protected]>
     * Blogs <http://blog.csdn.net/dengxu11>
     * 
     * ABOUT THE C PROGRAMMING LANGUAGE 
     * DENNIS MACALISTAIR RITCHIE (BORN SEPTEM
     * -BER 9, 1941) IS THE CREATOR OF THE C PR
     * -OGRAMMING LANGUAGE AND A KEY DEVELOPER 
     * OF THE UNIX OPERATING SYSTEM.
    ******************************************/
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>int main(int argc, char *argv[])
    {
        int x = 6, y = 8;
        x += y += x += y;
        printf("x = %d, y = %d\n", x, y);
        return 0;
    }
      

  7.   

    是的,你所说的就是左结合和右结合的问题。 java和C在处理方面是有差异的,C是右结合的
      

  8.   

    int x=6,y=8;
    x+=y+=x+=y;
    System.out.println("x"+x+" y"+y);从右往左看x+=y+=x+=y; 
    x+=y+=x=14;
    x+=y=22;
    x=28;