环境:Visual Studio 2005(.NET2.0) 预置: int a = 10; int b = 15;方法1. a = b+(b=a)*0; //用a=(b=a)*0+b测试是不行的,即b必须写在表达式前面方法2. a = a + b; b = a - b; a = a - b; //这种方法是最直观的,不过有可能溢出方法3. a ^= b; b ^= a; a ^= b; //a ^= b ^= a ^= b;却不行,暂时还不知道原因
哈哈,我一直只知道用: a = a + b; b = a - b; a = a - b; 原来还有更好的办法,a = b+(b=a)*0;汗,要努力学了。
a=a+b; //a=15,b=5
b=a-b; //a=15,b=10
a=a-b; //a=5,b=10
a=a+b; //a=15
b=a-b; //b=10
a=a-b; //a=5
两位能否解释下?
这个是不是利用了运算符优先级?
预置:
int a = 10;
int b = 15;方法1.
a = b+(b=a)*0; //用a=(b=a)*0+b测试是不行的,即b必须写在表达式前面方法2.
a = a + b;
b = a - b;
a = a - b; //这种方法是最直观的,不过有可能溢出方法3.
a ^= b;
b ^= a;
a ^= b; //a ^= b ^= a ^= b;却不行,暂时还不知道原因
a = a + b;
b = a - b;
a = a - b;
原来还有更好的办法,a = b+(b=a)*0;汗,要努力学了。
爽啊.....