Heero's Blog

Heero's Blog » 编程开发

从交换两个变量的值想到的

以C语言为例,一般来说,交换两个变量的值需要用到一个中间变量:

int a, b;
a = 10;
b = 11;
int c; //中间变量
c = a;
a = b;
b = c;

但也可以省掉这个中间变量,只是运算的次数增多了:

int a, b;
a = 10;
b = 11;
b = a + b; //得出两数字的和
a = a - b; //a减去两数字的和就得出原来的b的负值
a = -a;
b = b - a; //两数字的和减去原来b的值,就得出原来a的值

这是一个典型的时空问题:如果想省掉一个变量(节省内存),就需要多几次运算(运行时间更长)。在目前内存价格越来越低的情况下,大部分程序员会选择用空间交换时间。

评论 (共 0 条) 发表评论
发表评论
(必填)
(保密)
(必填) 点击更换验证码

(您发表的内容需通过审核才会显示)