不使用临时变量交换两个整数

头像
C艹艹
崭露头角
崭露头角
帖子: 26
注册时间: 2016年09月23日 11:32
拥有现金: 锁定
Has thanked: 4 times
Been thanked: 8 times
联系:

不使用临时变量交换两个整数

帖子 #1 C艹艹 » 2016年12月29日 17:18

Code: [全选] [展开/收缩] [Download] (Untitled.cpp)
  1. int a = 526;
  2. int b = 793;
  3.  
  4. a = a ^ b;
  5. b = a ^ b;
  6. a = a ^ b;
  7. printf("%d %d\n", a, b);

ccc
初来炸道
初来炸道
帖子: 7
注册时间: 2016年09月18日 21:50
拥有现金: 锁定
Been thanked: 5 times
联系:

Re: 不使用临时变量交换两个整数

帖子 #2 ccc » 2016年12月31日 07:31

Code: [全选] [展开/收缩] [Download] (freebsd-clang-main.cpp)
  1. #include <iostream>
  2.  
  3. int main() {
  4.     int x = 777;
  5.     int y = 221;
  6.     x = x + y;
  7.     y = x - y;
  8.     x = x - y;
  9.     std::clog << x << ", " << y << std::endl;
  10.     std::cin.get();
  11.     return 0;
  12. }


同样没有临时变量,也不需要比特位操作,性能不比比特位低


回到 “算法和编码”

在线用户

用户浏览此论坛: 没有注册用户 和 0 访客