[1]:算术运算加减法:
void change(int *a,int *b)
{
*a=*b-*a;
*b=*b-*a;
*a=*b+*a;
}
[2]:位运算异或法:
void change(int *a,int *b)
{
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;
}
void change(int *a,int *b)
{
*a=*b-*a;
*b=*b-*a;
*a=*b+*a;
}
分析:
a的地址空间 | b的地址空间 | |
初始值 | *a | *b |
第一步 | *b-*a | *b |
第二步 | *b-*a | *b-(*b-*a)即*a |
第三步 | *a+(*b-*a)即*b | *a |
[2]:位运算异或法:
void change(int *a,int *b)
{
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;
}
分析:
a的地址空间 | b的地址空间 | |
初始值 | *a | *b |
第一步 | *a^*b | *b |
第二步 | *a^*b | (*a^*b)^*b即*a |
第三步 | (*a^*b)*a即*b | *a |