无中间变量交换swap(a,b)

#include <stdio.h>
/*
加减法
整型、浮点型(损失精度)
*/
void swap1(int *a,int *b)
{
    *a=*a+*b;
    *b=*a-*b;
    *a=*a-*b;
}
/*
异或法
整型
*/
void swap2(int *a,int *b)
{
    *a=*a^*b;
    *b=*a^*b;
    *a=*a^*b;
}
/*
乘除法
整型、浮点型(损失精度),b!=0
*/
void swap3(int *a,int *b)
{
    *a=(*a)*(*b);
    *b=(*a)/(*b);
    *a=(*a)/(*b);
}
int main()
{
    int a=3,b=4;
    swap1(&a,&b);
    printf("%d %d\n",a,b);
    swap2(&a,&b);
    printf("%d %d\n",a,b);
    swap3(&a,&b);
    printf("%d %d\n",a,b);
    return 0;
}

 

posted @ 2016-06-29 16:52  三味线、  阅读(202)  评论(0编辑  收藏  举报