给定两个整型变量的值,将两个值的内容进行交换
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;
}
输出结果为:

&spm=1001.2101.3001.5002&articleId=102761691&d=1&t=3&u=fb4e95fa38d14d38b7805a425193fb8d)
1376

被折叠的 条评论
为什么被折叠?



