社区
非技术区
帖子详情
如何实现交换变量而不用中间值?
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
打赏
收藏
如何实现交换变量而不用中间值?
比如 int a,b; a=1; b=2; Exchange(a,b); void Exchange(int &num1,int & num2); 要求在Exchange中交换,但不用中间变量
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
不使用
中间
值
交换
两个
变量
的
值
方法及其原理
目录 1.常规方法 2.使用加法 3.使用^来
实现
1.常规方法 在平时时我们要
交换
两个
变量
的
值
时,我们常常使用暂存
变量
来保存
中间
数,以此来
实现
交换
两个
变量
的
值
,这种方法简单且易
实现
。 void change(char* p1, char* p2) { int tmp = 0; tmp = *p1; *p1 = *p2; *p2 = tmp; } 2.使用加法 这个方法的原理很简单就是使用了一点加法知识。 void change(char* p1, char...
不用
中间
变量
交换
两个
变量
的
值
我们刚学编程的时候遇到需要
交换
两个
变量
的
值
时通常都会定义一个
中间
变量
,比如: #include <iostream> int main() { int a = 4, b = 5; int c = a; a = b; b = c; std::cout << "a =...
不用
中间
变量
交换
两个数的
值
不用
中间
变量
,
交换
变量
实现
两个
变量
的
值
交换
的三种方法(两种方法不使用
中间
变量
)
两个
变量
值
的
交换
第一种方法: 也就是最容易想到的使用
中间
变量
的方法 //完整代码展示 public class ChangeNum { public static void main(String[] args) { //
交换
两个
变量
a与b的
值
int a = 2; int b = 3; // 定义
中间
变量
把a的
值
赋给temp int temp = a; // 把b的
值
赋给a a = b; // 最后把temp里面a的
值
赋给b
实现
了
交换
b = temp; // 打印
C#开发笔记之07-如何
实现
交换
2个
变量
的
值
而不引入
中间
变量
?
C#开发笔记概述 这里给出常见的7种方法,仅供大家参考,部分
实现
C#不支持。 1、加减减法 private static void Swap1(ref int a, ref int b) { a = a + b; b = a - b; a = a - b; } 2、减减加法 private static void Swap2(ref int a, ref ...
非技术区
15,440
社区成员
58,162
社区内容
发帖
与我相关
我的任务
非技术区
C/C++ 非技术区
复制链接
扫一扫
分享
社区描述
C/C++ 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章