您的位置:首页 > 编程语言 > C语言/C++

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

2013-11-12 18:51 288 查看

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

 
本文地址: 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;
}

 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息