如何实现交换变量而不用中间值?

Star_Desert 2002-02-11 11:42:19
比如
int a,b;
a=1;
b=2;
Exchange(a,b);

void Exchange(int &num1,int & num2);

要求在Exchange中交换,但不用中间变量

...全文
270 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
sqhua 2002-02-16
  • 打赏
  • 举报
回复
回复人: jobuson(小王子) ( ) 信誉:100 2002-2-13 1:03:06 得分:0

同意你的看法,现在谁写这样的算法给我看,我一定要骂。
tohigh 2002-02-16
  • 打赏
  • 举报
回复
同意 NowCan(能量、激情、雨水、彩虹——雷雨云),不可能实现交换两个结构体变量,而不用中间变量。
zheng_can 2002-02-16
  • 打赏
  • 举报
回复
To NowCan:
一个一个元素来,哈哈~~
循序渐进嘛
ttzzgg_80713 2002-02-16
  • 打赏
  • 举报
回复
| and &
NowCan 2002-02-16
  • 打赏
  • 举报
回复
哈,如何交换两个结构体变量,不用中间变量?
zheng_can 2002-02-16
  • 打赏
  • 举报
回复
我是boss的话,就要考虑考虑写这样的代码的人是否继续留用了
:)
zfbt 2002-02-15
  • 打赏
  • 举报
回复
对,就是用上面的异或方法!!
born_in70s 2002-02-14
  • 打赏
  • 举报
回复
ddszhan(高等数学): 浮点数也可以呀,只要把浮点数当作bit string.
ddszhan 2002-02-14
  • 打赏
  • 举报
回复
用异或很好,不用考虑溢出:
a=a^b;
b=a^b;
a=a^b;
但是,a,b一定是定点数据
born_in70s 2002-02-14
  • 打赏
  • 举报
回复
推荐用异或,+/-不可靠
jobuson 2002-02-13
  • 打赏
  • 举报
回复
a=a+b;
b=a-b;
a=a-b;
——————————
就是这种方法了。这是在那个“传奇”年代的产物。
那时内存的昂贵是你很难想象的,所以能节省一个单元就是省一个单元。

但现在21世纪,如果你在工程中再写出这样不可读的代码,,hehe,,小心被老板炒了。。。))
shenhong0 2002-02-12
  • 打赏
  • 举报
回复
a=a+b;
b=a-b;
a=a-b;
awinder 2002-02-12
  • 打赏
  • 举报
回复
void Exchange(int &num1,int & num2)
{
num1^=num2;
num2^=num1;
num1^=num2;
}
最好的交换方式。其他运算符不能适用于全部整数。

fangrk 2002-02-11
  • 打赏
  • 举报
回复
没多大意思!
phoenix96_2000 2002-02-11
  • 打赏
  • 举报
回复
有两种办法:
1。用汇编语言,这个的实现方法还不少,简单就是下一种
__asm{
push num1
push num2
pop num1
pop num2
}
2,用逻辑运算的异或的特性:

num1=num1^num2;
num2=num1^num2; //现在num2==原来的num1了
num1=num2^num1; //现在num1==原来的num2了
topbit 2002-02-11
  • 打赏
  • 举报
回复
num1+=num2;
num2=num1-num2;
num1-=num2;
wujunwei 2002-02-11
  • 打赏
  • 举报
回复
void Exchange(int &num1,int & num2)
{ num1=num1+num2;
num2=num1-num2;
num1=num1-num2;
}
wujunwei 2002-02-11
  • 打赏
  • 举报
回复
main()
{int a,b;
a=10,b=2;
a=a+b;
b=a-b;
a=a-b;} 输出结果是:a=2,b=10;这也可用在输出转置上的啊!
dedema 2002-02-11
  • 打赏
  • 举报
回复
a=a^b;
b=a^b;
a=a^b;
这样就可以把a和b互换值了。。。
zfbt 2002-02-11
  • 打赏
  • 举报
回复
你可以看看《编程黑马真言》,那里面有一个方法!我一时想不起来了!
加载更多回复(3)

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧