【C语言指南】交换两个变量的三种方式

两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式。

其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用

1.使用临时变量(推荐)这是日常使用最多的一种方式,只需要额外申请一个临时变量,简单实用

代码语言:javascript复制#include

int main()

{

int a = 5;

int b = 3;

printf("交换前 %d %d\n", a, b);

int c = a; //a的值放到临时变量中

a = b; //b的值放到a中

b = c; //临时变量中存放的a的值放到b中

printf("交换后 %d %d\n", a, b);

return 0;

}2.相加和相减的方式(值较大时可能丢失数据)使用这种方式的环境,就是在条件不允许创建额外的临时变量时(比如题目要求,面试官要求)

但是这种情况虽然能达到交换的效果,但是在两个变量较大时(接近整型变量的上限),求和之后就会丢失一部分的数据,导致结果出错

代码语言:javascript复制#include

int main()

{

int a = 5;

int b = 3;

printf("交换前 %d %d\n", a, b);

a = a + b;

b = a - b;

a = a - b;

printf("交换后 %d %d\n", a, b);

return 0;

}3.按位异或运算这种方式巧妙得运用了按位异或的计算特点——对任何两个值进行按位异或运算之后,再拿结果与原来的一个值进行按位异或,都会得到另外一个原来的值

这种方式解决了上一种方式存在的丢失数据问题,且不需要额外的临时变量,缺点是可读性较差

代码语言:javascript复制#include

int main()

{

int a = 5;

int b = 3;

printf("交换前 %d %d\n", a, b);

a = a ^ b;

b = a ^ b;

a = a ^ b;

printf("交换后 %d %d\n", a, b);

return 0;

}创作不易,还望点赞支持。如有错误,还望提醒更正。


大众朗逸对比别克英朗!都是十万级的热门家轿,谁更胜一筹?
亚洲球队全军覆没!巴西2-1绝杀日本后,世界杯更大惊喜还在后面