社区
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类型,又不能用位操作~
不知道各位 有没有什么好的方法?
...全文
362
6
打赏
收藏
不用中间变量,如何实现两个double类型的数据的交换?
写一个函数 void exchange(double a,double b) 作用是把a b的值互换 函数中不能用除了a和b以外的第三个变量~ 看起来似乎很简单~ 有一个人给出一个算法: a=a+b; b=a-b; a=a-b; 但是,这样做可能会存在两个数的和(或差)溢出,如果这两个数都很大。 由于是double类型,又不能用位操作~ 不知道各位 有没有什么好的方法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
我不行
不过估计大家也不行
何必呢?
Java不使用
中间
变量
把
两个
变量
的值互换
本文介绍了一种不使用
中间
变量
进行
两个
Java String
变量
及
double类型
常量的
交换
方法,通过ArrayList和数学运算
实现
变量
值的互换,展示了代码
实现
细节。
不使用
中间
变量
交换
两个
浮点数
本文介绍了一种在C++中不使用
中间
变量
交换
两个
浮点数的方法,通过将
double类型
数据
拆分为两部分,分别进行异或运算
实现
。首先,将
double类型
的
变量
转换为int类型的指针,然后分两次
交换
其前后4个字节的
数据
。
不用
中间
变量
交换
两个
double类型
本文展示了一个通过位操作
实现
的双精度浮点数
交换
函数。该方法利用了整数类型的位运算特性来达到目的,避免了使用临时
变量
。文章最后通过一个简单的main函数演示了该函数的功能。
C语言:比较三个数(
double类型
)的大小
本文介绍了一个使用C语言
实现
的简单程序,该程序接收三个
double类型
的数作为输入,并通过比较和
交换
操作,按从大到小的顺序输出这三个数。程序使用了
中间
变量
t来辅助完成数值的
交换
。
C语言
实现
数据
交换
本文介绍了如何使用C语言不借助额外空间
实现
两个
整数的
交换
。通过输入
两个
整数,利用
中间
变量
t进行临时存储,然后依次将b的值赋给a,t的值赋给b,完成
交换
过程。此方法适用于不同类型的
数据
,如float和double。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章