关于两数交换的算法
更多资料参见http://hi.baidu.com/chengui0327/blog/item/be7be30109086e19738b653e.html
另外,还有一种方法,但我验证不正确,还需考虑:void swap4(int *a, int *b){ if(a <b) { a=(int*)(b-a); /* 用两个变量分配的地址来转换 */ b=(int*)(b-(int(a)&0x0000ffff)); /* int(a)&0x0000ffff 为取低16位的偏移地址 */ a=(int*)(b+(int(a)&0x0000ffff)); } else { b=(int*)(a-b); a=(int*)(a-(int(b)&0x0000ffff)); b=(int*)(a+(int(b)&0x0000ffff)); } /* 优点:不会溢出,可进行相同数值的交换; 缺点:运算复杂 且必须假设两待交换变量为指针类型 */}