标签:blog io 使用 2014 log 代码 工作 as 算法
在开始你使用这种方法int tmp; tmp = a; a = b; b = tmp;
void swap(int *a, int *b); { int tmp; tmp = *a; *a = *b; *b =tmp; }//下面我就不写函数了
x = x +y; y = x -y; x = x -y;
x = x * y; y = x / y; x = x / y;
x = x^y; y = x^y; x = x^y;
x = x ^ 1;//等价下面语句 x = ~x; 原理如下: 1 = 1 ^ 0; 1 = 0 ^ 1; 0 = 1 ^ 1;
x = x ^ 0 ;//等价下面语句 x = x; 原理如下: 0 = 0 ^ 0; 1 = 0 ^ 1; 1 = 1 ^ 0;
/************************************************************************* > File Name: test.c > Author: 傻李 > Mail: hellojukay@gmail.com > Created Time: 2014年11月23日 星期日 11时50分03秒 ************************************************************************/ #include<stdio.h> int main() { int x =3,y =4; int t; printf("(%d,%d)\n",x,y); t = x ^ y; x = x ^ t; y = x ^ t; printf("(%d,%d)\n",x,y); return 0; }
int x = 3; int y = 4; int tmp; tmp = x ^ y; y = t ^ y;//y = (x ^ y) ^ y ->> y = x ^ y ^ y ->> y = x ^ 0; ->> y = x;//此时y的值已经变为x x = t ^ x; x = (x ^ y) ^ x; ->> x= x ^ x ^ ; x = y; 带入数值来运算一遍: tmp = 3 ^ 4; y = tmp ^ y = (3 ^ 4) ^ 4 = 3; x = tmp ^ x = (3 ^ 4) ^ 3 = 4;
x = x ^ y; y = x ^ y; x = x ^ x;于是下面代码也是不难理解的:
a ^= b ^= a ^= b;//为了防止被乱棍打死,还是不要写这种代码了
标签:blog io 使用 2014 log 代码 工作 as 算法
原文地址:http://blog.csdn.net/u013163178/article/details/41409941