posts - 225, comments - 62, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

交换a,b值的疑问

Posted on 2007-01-13 21:16 魔のkyo 阅读(278) 评论(1)  编辑 收藏 引用

 

#include  <iostream>

using namespace std;

void MySwap1(int& a,int& b)
{
    _asm {
        mov eax,a
        mov ebx,b
        xor ebx,eax
        xor eax,ebx
        xor ebx,eax
        mov a,eax
        mov b,ebx
    }
}

int main()
{
    int  a,b;
    scanf("%d %d",&a,&b);
    MySwap1(a,b);
    printf( "a=%d,b=%d\n" ,a,b);
}

我认为MySwap应该能实现交换值的功能为什么没有实现呢?

Feedback

# re: 交换a,b值的疑问  回复  更多评论   

2007-02-06 01:18 by 魔のkyo
#include <iostream>

using namespace std;

void MySwap1(int& a,int& b)
{
printf("Swap1 %p %p\n",&a,&b);
_asm {
mov eax,a
mov ebx,b
xor ebx,eax
xor eax,ebx
xor ebx,eax
mov a,eax
mov b,ebx
}
printf("Swap2 %p %p\n",&a,&b);
}

int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("main1 %p %p\n",&a,&b);
MySwap1(a,b);
printf("main2 %p %p\n",&a,&b);
printf( "a=%d,b=%d\n" ,a,b);
}
发觉问题处在引用上,只是交换了引用的地址
只有注册用户登录后才能发表评论。