| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5374 人关注过本帖
标题:交换两个数字,不引入第三个变量的方法
只看楼主 加入收藏
VxWorks
Rank: 3Rank: 3
来 自:WindRiver
等 级:论坛游民
威 望:6
帖 子:859
专家分:68
注 册:2007-11-24
收藏
得分:0 
野比显然没有学过奔腾处理器,异常是CPU内部执行程序出错产生的程序中断。
这么多年了,很多人的思想还是8086和DOS的

为了防止世界被破坏,为了守护世界的和平,贯彻爱与真实的邪恶,可爱又迷人的反派角色,VxWorks!
Don't ask me any question.I'm just here to buy soy sauce.
2008-06-24 12:41
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
知道
2008-06-24 12:41
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
额……事实上……中断和异常好像都是int……
中断是指API或者其他情况下,反正是程序主动int,也叫陷入。异常则是代码执行出错自动int转入处理语句……
很久不看Win32汇编了,不知道概念中正确否。
反正都是这些东西啦……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-06-24 12:43
hxe206
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-6-24
收藏
得分:0 
这样也许会更好
a=a^b;
b=a^b;
a=a^b;
2008-06-24 12:45
VxWorks
Rank: 3Rank: 3
来 自:WindRiver
等 级:论坛游民
威 望:6
帖 子:859
专家分:68
注 册:2007-11-24
收藏
得分:0 
IA-32处理器中,CPU执行指令触发的叫异常,CPU外部通过引脚NMI和INTR输入的中断信号叫外部中断,分别是可屏蔽和不可屏蔽中断。

除法指令会产生溢出异常,加法不会。

为了防止世界被破坏,为了守护世界的和平,贯彻爱与真实的邪恶,可爱又迷人的反派角色,VxWorks!
Don't ask me any question.I'm just here to buy soy sauce.
2008-06-24 12:48
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
保护模式都用得少,别说win32了,最多调细节dump的时候看看
混饭吃的人只能rad,没办法
2008-06-24 12:48
VxWorks
Rank: 3Rank: 3
来 自:WindRiver
等 级:论坛游民
威 望:6
帖 子:859
专家分:68
注 册:2007-11-24
收藏
得分:0 
我说的是IA-32处理器,不管你用什么OS,不管你用实模式还是保护模式,除非你用虚拟8086模拟,那里没有异常只有中断的概念。

为了防止世界被破坏,为了守护世界的和平,贯彻爱与真实的邪恶,可爱又迷人的反派角色,VxWorks!
Don't ask me any question.I'm just here to buy soy sauce.
2008-06-24 12:53
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
了解
2008-06-24 12:58
无语雨季
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-6-19
收藏
得分:0 
对于变量运算溢出不容置疑是错的,对错误去辩解没有意思!
其实对于交换两个变量,最好是使用第三变量,代码效率更高;
既然这里说就是不使用第三变量,当然防止侧漏,溢出等现象,那就使用异或最为方便
main()
{
 int a,b;
 scanf("%d,%d",&a,&b);
 a^=b;
 b^=a;
 a^=b;
 printf("%d,%d",a,b);
}
2008-06-25 19:55
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
我记得有一个汇编指令可以交换两个数据。

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-06-25 20:13
快速回复:交换两个数字,不引入第三个变量的方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018939 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved