C++ - 两数交换, 不引入第三个变量

来源:互联网 发布:打印机网络共享软件 编辑:程序博客网 时间:2024/06/06 07:22

两数交换, 不引入第三个变量

 

本文地址: http://blog.csdn.net/caroline_wendy/article/details/15506627 

 

两种方法, 推荐第一种方法;

第一种方法(加减):

a = a+b; b = a-b; a = a-b;

第二中方法(异或):

a = a^b; b=a^b; a=a^b;

即 a ^= b ^= a ^= b;

 

不推荐使用异或方法,CFAQs里面有说明;

异或方法是未定义的(undefined)不可移植的(not portably), 对于某些编译器会出现问题.

具体参见: http://c-faq.com/expr/xorswapexpr.html

 

代码:

/* * test.cpp * *  Created on: 2013.11.12 *      Author: Caroline */#include <iostream>int main (void) {int a = 2, b = 10;std::cout << "original: ";std::cout << "a = " << a << " b = " << b << std::endl;//加减方法a += b;b = a-b;a -= b;std::cout << "plus&minus: ";std::cout << "a = " << a << " b = " << b << std::endl;//异或方法a ^= b ^= a ^= b;std::cout << "xor: ";std::cout << "a = " << a << " b = " << b << std::endl;return 0;}


 

 

原创粉丝点击