java和c的执行是不一致的
相同之处:i ^= (j ^= (i ^= j)); java和C都是这个执行顺序;
不同之处:
java:执行完第一个(i ^= j)的时候,最左边的i的值还是1而不会是(i ^= j)的值
C:执行完第一个(i ^= j)的时候,最左边(第一个)i的值是(i ^= j)
你的程序改成这样就可以了:
j ^= i ^= j;
i ^= j;
或
i =i^j;
j=i^j;
i=i^j;
你不要用这种连写的方式,改成:
i =i^j;
j=i^j;
i=i^j;
这样就可以了
位运算符与加减乘除等号的运算符优先级不同,应该是这个意思吧,java与c的差别,楼主是这个意思吧