论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

C语言教程:交换变量值方法讨论

文章类别:C语言程序设计 | 发表日期:2010-10-29 9:24:24

C语言教程:交换变量值方法讨论

以下倒底那个方法最好?

方法<1>: 
最简单,3步,全为赋值运算,所以速度最快.
不过要多用一个中间变量.
t=a;
a=b;
b=t;

方法<2>:
3个步骤,不但有赋值运算,还有算术运算,所以速度总体比第<1>种慢.但
只用了两个变量.
a+=b;
b=a-b;
a-=b;

方法<3>:
4个步骤,不但有赋值运算,也有算术运算,所以速度总体比第<2>种慢.也
只须两个变量.
a += b;
b -= a; b = -b;
a -= b;

如果需要多次反复运行这几句命令,如:做个小试验试速度:
for (i=0; i<30000; i++)
    for(j=0; j<30000; j++)
    {
a += b;
b -= a; b = -b;
a -= b;
    }
很显然比
for (i=0; i<30000; i++)
    for(j=0; j<30000; j++)
    {
t=a;
         a=b;
         b=t;
    }
运行起来花更多的时间(估计有一倍多,不信试试)

可是好多书上说a+=b;b-=a;b=-b;a-=b;的这种称为 复合的赋值运算 比前者生成的
目标程序代码更紧凑,效率更高......速度都慢了,高在哪? 
或者说这是指那方面的效率高?内存占用率吗?
另外
a+=b;
b-=a;b=-b;
a-=b;
的这种方法到底用在什么地方多? 才体现了高效率?

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058