两个变量交换数据的方式
int a = 4;
int b = 7;
如何交换 a 与 b 的值 使得a = 7;b = 4
1、三杯水方法(通用方法,比较常用)
首先定义一个同类型的变量
然后将 a 的值赋给 c;b 的值赋给 a;c 的值赋给 b
#include <stdio.h>
int main(int argc, const char* argv[])
{
int a = 4;
int b = 7;
int c = 0;
printf(" a = %d;b = %d\n", a, b);
c = a;
a = b;
b = c;
printf(" a = %d;b = %d\n", a, b);
return 0;
}
2、三次异或(比较简便,但是不适合字符串与结构体类型数据交换)
a 与 b 异或赋值给 a;
a 与 b 异或赋值给 b;
a 与 b 异或赋值给 a;
#include <stdio.h>
int main(int argc, const char* argv[])
{
int a = 4;
int b = 7;
printf(" a = %d;b = %d\n", a, b);
a = a^b;
b = a^b;
a = a^b;
printf(" a = %d;b = %d\n", a, b);
return 0;
}
3、加减法
a 加 b 的值赋给 a;
a 减 b 的值赋给 b;
a 减 b 的值赋给 a;
#include <stdio.h>
int main(int argc, const char* argv[])
{
int a = 4;
int b = 7;
printf(" a = %d;b = %d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf(" a = %d;b = %d\n", a, b);
return 0;
}
注意:不要越界,a+b的值有可能超出类型的最大数据
例如:有符号char类型存储范围为[-128,127],当使用char类型定义变量时,如果a + b的值大于127,就会发生错误。
#include <stdio.h>
int main(int argc, const char* argv[])
{
char a = 122;
char b = 155;
printf(" a = %d;b = %d\n", a, b);// a = 122;b = -101
a = a + b;
b = a - b;
a = a - b;
printf(" a = %d;b = %d\n", a, b);// a = -101;b = 122
return 0;
}
例子
使用C实现两个变量交换值
int a = 10;
int b = 20;
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a = 10;
int b = 20;
/*
//三杯水交换 常规的用法
int temp = 0;
temp = a;
a = b;
b = temp;
*/
/*
//不使用第三个变量 这种方法在数据比较大时可能会出现溢出的问题
a = a+b;//30 20
b = a-b;//30 10
a = a-b;//20 10
*/
//不使用第三个变量
/*
a = a^b;
b = a^b;
a = a^b;
*/
printf("a = %d b = %d\n", a, b);
return 0;
}