给定两个整型变量的值,将两个值的内容进行交换
1、在不增加中间变量的情况
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 5;
int b = 6;
a = a + b;
b = a - b;
a = a - b;
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
输出结果如下:
2、无中间变量(按位与操作)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 5;
int b = 6;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
输出结果为:
3、有中间变量的两数值交换
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 5;
int b = 6;
a = a + b;
b = a - b;
a = a - b;
//或者下面这种方式
/*a = a ^ b;
b = a ^ b;
a = a ^ b;*/
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
输出结果为:
4、用指针方式交换两数值
#include<stdio.h>
#include<stdlib.h>
void swap(int* x, int* y)
{
int temp = *x;
*x = *y;
*y = temp;
}
int main()
{
int a = 30;
int b = 20;
swap(&a, &b);
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
输出结果为: