如何在不使用临时变量的情况下交换两个变量的值?

实现此操作有三种方法:

1)加减法:

代码如下:

#include<stdio.h>
int main()
{
	int a=8,b=5;
	printf("after------------\n");
	printf("a=%d,b=%d",a,b);
	printf("\n");
	a=a+b;
	b=a-b;
	a=a-b;
	printf("after------------\n");
	printf("a=%d,b=%d",a,b);
	printf("\n");
	return 0;
}


此操作如果对浮点数进行操作,有可能会丢失一定的精度。


2)乘除法:

代码如下:

#include<stdio.h>
int main()
{
	int a=8,b=4;
	printf("before----------------\n");
	printf("a=%d,b=%d",a,b);
	printf("\n");
	a=a*b;
	b=a/b;
	a=a/b;
	printf("after----------------\n");
	printf("a=%d,b=%d",a,b);
	printf("\n");
	return 0;
}


此操作如果对浮点数进行操作,有可能会丢失一定的精度。

加减法与乘除法都不会造成溢出!溢出的会在后面溢出回来。以加减法为例,第一步的加

运算可能会造成溢出,但它所造成的溢出会在后边的减运算中被溢出回来。


3)异或法:

代码如下:

#include<stdio.h>
int main()
{
	int a=65534,b=30;
	printf("before------------\n");
	printf("a=%d,b=%d",a,b);
	printf("\n");
	a=a^b;
	b=a^b;
	a=a^b;
	printf("after------------\n");
	printf("a=%d,b=%d",a,b);
	printf("\n");
	return 0;
}





除此之外还有嵌入汇编代码的方法,还有待学习!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包含章节:课后习题答案 第1章数字媒体技术概论 1.1媒体及其特性 1.1.1媒体概念 1.1.2媒体特性 1.2数字媒体及其特性 1.2.1数字媒体概念 1.2.2数字媒体特性 1.2.3数字媒体传播模式 1.3数字媒体技术的研究领域 1.3.1数字媒体内容产业 1.3.2数字媒体技术发展趋势 1.3.3数字媒体技术研究领域 1.3.4数字媒体应用领域 练习与思考 第2章数字音频技术基础 2.1音频技术及其特性 2.1.1音频的概念及特性 2.1.2模拟音频记录设备及特性. 2.1.3模拟音频处理设备 2.2音频数字化 2.2.1数字音频 2.2.2音频的数字化过程 2.3数字音频质量及格式 2.3.1音频数据率及质量 2.3.2声音文件格式 2.4数字音频的编辑技术 2.4.1数字音频的编辑方式 2.4.2数字音频设备 2.4.3数字音频编辑软件简介 2.4.4数字音频编辑实例 2.5数字音频技术应用 练习与思考 第3章数字图像的处理技术 3.1图像颜色模型 3.1.1视觉系统对颜色的感知 3.1.2RGB颜色模型 3.1.3CMYK颜色模型 3.1.4HSB颜色模型 3.1.5YUV与YIQ颜色模型 3.1.6CIELab颜色模型 3.2彩色空间的线性变换 3.2.1YUV与RGB彩色空间变换 3.2.2YIQ与RGB彩色空间变换 3.2.3HSI(HSB)与RGB之间的转换 3.2.4YCrCb与RGB彩色空间变换 3.3图像的基本属性及种类 3.3.1分辨率 3.3.2颜色深度 3.3.3真彩色、伪彩色与直接色 3.3.4图像的大小及种类 3.4数字图像的获取技术 3.4.1位图的获取设备与技术 3.4.2矢量图的获取设备与技术 3.5图像创意设计与编辑技术 3.5.1图像处理软件简介 …… 第4章数字视频及编辑 第5章数字动画技术 第6章游戏设计技术 第7章数字媒体的Web集成与应用 第8章数字媒体压缩技术 第9章数字媒体存储技术 第10章数字媒体管理与保护 第11章数字媒体的传输技术 第12章数字媒体技术发展趋势

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值