社区
C++ 语言
帖子详情
不用中间变量,如何实现两个double类型的数据的交换?
Aladdin898
2003-11-03 05:28:34
写一个函数
void exchange(double a,double b)
作用是把a b的值互换
函数中不能用除了a和b以外的第三个变量~
看起来似乎很简单~
有一个人给出一个算法:
a=a+b;
b=a-b;
a=a-b;
但是,这样做可能会存在两个数的和(或差)溢出,如果这两个数都很大。
由于是double类型,又不能用位操作~
不知道各位 有没有什么好的方法?
...全文
294
6
打赏
收藏
不用中间变量,如何实现两个double类型的数据的交换?
写一个函数 void exchange(double a,double b) 作用是把a b的值互换 函数中不能用除了a和b以外的第三个变量~ 看起来似乎很简单~ 有一个人给出一个算法: a=a+b; b=a-b; a=a-b; 但是,这样做可能会存在两个数的和(或差)溢出,如果这两个数都很大。 由于是double类型,又不能用位操作~ 不知道各位 有没有什么好的方法?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nandy_lau
2003-11-03
打赏
举报
回复
david08(David) 正确!
iceheart
2003-11-03
打赏
举报
回复
异或
xiaonian_3654
2003-11-03
打赏
举报
回复
啊,来迟了
楼上100分
david08
2003-11-03
打赏
举报
回复
#include <stdio.h>
double aa=3.1415926;
double bb=9643380.2345;
void xchgdbl(double *a, double *b)
{
*(int *)a ^= *(int *)b;
*(int *)b ^= *(int *)a;
*(int *)a ^= *(int *)b;
*(((int *)a) + 1) ^= *(((int *)b) + 1);
*(((int *)b) + 1) ^= *(((int *)a) + 1);
*(((int *)a) + 1) ^= *(((int *)b) + 1);
}
int main()
{
xchgdbl(&aa, &bb);
printf("result: %16.6f, %16.6f\n", aa, bb);
return 0;
}
Aladdin898
2003-11-03
打赏
举报
回复
大家想想,在上面条件限制下,到底有没有解?
也不要这么快就放弃~
放弃也得有理由吧~
呵呵
tolixiaohui
2003-11-03
打赏
举报
回复
我不行
不过估计大家也不行
何必呢?
不使用
中间
变量
交换
两个
浮点数
C++中不使用
中间
变量
交换
两个
整型
数据
,可以采用异或运算的特点: a^a = 0; a^0 = a; 从而
交换
两个
数的算法如下: a = a^b; b = a^b; a = a^b; 利用上面的方法,如何
交换
两个
浮点数呢? 由于double
数据
占8个...
不用
中间
变量
,
实现
两个
变量
的
交换
原理:其实是用a做
中间
变量
; 问题:(1)内存溢出,有人提出这种解法如果a,b的值非常大时可能会溢出,即a=a+b;可能会超出Int范围; 而实际上加法造成的溢出后面的减法会溢出回来,所以这种算法不会产生...
不用
第三个
变量
,
实现
两数调换
不用
第三个
变量
,
实现
两数调换
函数
交换
两个
变量
java_java 编写函数
交换
两个
基本
变量
的值
java 编写函数
交换
两个
基本
变量
的值Java编写一个函数
交换
两个
变量
的值Java函数在传递过程中只能够传值,不能传址。这样,函数的参数在函数内部做任何变化就都不会反映到外部调用者来。所以解决之道就是要找到要
交换
...
Java
交换
两数值
变量
的常用方法
Java
交换
两数值
变量
的常用方法 //1.加减运算
交换
double num1 = 0.01; double num2 = 9.99; //进行加减运算,利用赋值
交换
num1 = num1 + num2; num2 = num1 - num2; num1 = num1 - num2; System.out....
C++ 语言
65,189
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章