| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1923 人关注过本帖
标题:学C的都来思考一下
只看楼主 加入收藏
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:25 
__asm{
mov eax,a
mov ebx,b
mov a,ebx
mov b,eax
}
收到的鲜花
  • QQ3469571352011-08-29 17:28 送鲜花  10朵   附言:我很赞同
2011-08-29 14:11
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用hahayezhe在2011-8-29 14:11:34的发言:

__asm{
mov eax,a
mov ebx,b
mov a,ebx
mov b,eax
}



你这玩意实际上用了4个变量。
2011-08-29 14:22
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
以下是引用Devil_W在2011-8-29 14:22:31的发言:

 
 
 
你这玩意实际上用了4个变量。
a=a^b;
b=a^b;
a=a^b;
这个不借助寄存器?
2011-08-29 14:32
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
二楼的方法是可以的,这是交换两个内存块里的内容,所以适用于所有类型,但如果通过解引的方法来交换,需要判断这两个指针是否重叠,如果重叠会有意想不到的效果。

My life is brilliant
2011-08-29 14:37
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
__asm{
push a
push b
pop a
pop b
}
2011-08-29 14:46
zhshjia
Rank: 2
等 级:论坛游民
帖 子:16
专家分:19
注 册:2011-8-29
收藏
得分:0 
这个估计不用第三变量   要承担溢出风险了
2011-08-29 14:47
小偌
Rank: 4
来 自:成都
等 级:业余侠客
帖 子:170
专家分:241
注 册:2011-8-15
收藏
得分:5 
我觉得~应该~
可以吧~
ab互换`~
a[0]=a[0]+a[1];
a[1]=a[0]-a[1];
a[0]=a[1];
收到的鲜花
  • QQ3469571352011-08-29 18:34 送鲜花  5朵   附言:试着去运行下

不是很好么..比起关在笼子里的可怜小鸟..我成为乌鸦已足矣
2011-08-29 14:50
sqwxk
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-8-29
收藏
得分:0 
唉,只要有人的地方,就有江湖,绝对的真理,比地球围着太阳转还要绝对
2011-08-29 16:11
落叶深蓝色
Rank: 8Rank: 8
来 自:山东
等 级:蝙蝠侠
帖 子:319
专家分:807
注 册:2010-12-8
收藏
得分:0 
swap(a,b);这个呢?
2011-08-29 16:39
feodor8
Rank: 1
等 级:新手上路
帖 子:13
专家分:6
注 册:2011-7-12
收藏
得分:0 
温故而知新
2011-08-29 16:55
快速回复:学C的都来思考一下
数据加载中...
 
   



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

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