C语言实现两个变量值交换的三种方式

 更新时间:2025年03月25日 11:22:25   作者:倔强的石头_  
两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下

1.使用临时变量(推荐)

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

#include<stdio.h>
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.相加和相减的方式(值较大时可能丢失数据)

使用这种方式的环境,就是在条件不允许创建额外的临时变量时(比如题目要求,面试官要求)

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

#include<stdio.h>
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.按位异或运算

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

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

#include<stdio.h>
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;
}

到此这篇关于C语言实现两个变量值交换的三种方式的文章就介绍到这了,更多相关C语言两个变量值交换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言循环结构详解

    C语言循环结构详解

    本文主要介绍C语言循环结构的基础知识,这里整理了循环的基础资料并附简单的代码示例详细讲解,有需要的小伙伴可以参考下
    2021-10-10
  • C++ 多继承详情介绍

    C++ 多继承详情介绍

    这篇文章主要介绍了C++ 多继承详情,C++支持多继承,即允许一个类同时继承多个类。只有C++等少数语言支持多继承,下面我们就来看看具体的多继承介绍吧,需要的朋友可以参考一下
    2022-03-03
  • 深入分析C++中deque的使用

    深入分析C++中deque的使用

    本篇文章介绍了,深入分析C++中deque的使用。需要的朋友参考下
    2013-05-05
  • 一文详解C++的访问说明符

    一文详解C++的访问说明符

    访问说明符是 C++ 中控制类成员(属性和方法)可访问性的关键字,它们用于封装类数据并保护其免受意外修改或滥用,本文将给大家详细的介绍一下C++的访问说明符,感兴趣的朋友可以参考下
    2024-04-04
  • clion最新激活码+汉化的步骤详解(亲测可用激活到2089)

    clion最新激活码+汉化的步骤详解(亲测可用激活到2089)

    这篇文章主要介绍了clion最新版下载安装+破解+汉化的步骤详解,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • C语言实现学生籍贯信息记录簿

    C语言实现学生籍贯信息记录簿

    这篇文章主要为大家详细介绍了C语言实现学生籍贯信息记录簿,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C++实现LeetCode(76.最小窗口子串)

    C++实现LeetCode(76.最小窗口子串)

    这篇文章主要介绍了C++实现LeetCode(76.最小窗口子串),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++实现学校人员管理系统

    C++实现学校人员管理系统

    这篇文章主要为大家详细介绍了C++实现学校人员管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++类与对象的详细说明2

    C++类与对象的详细说明2

    这篇文章主要为大家详细介绍了C++的类与对象,使用数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 关于C++地址交换的实现

    关于C++地址交换的实现

    在C++中,地址交换通常是指通过指针操作改变两个变量之间的内存地址引用,当你有两个指针分别指向两个变量时,你可以通过某种机制交换这两个指针的内容,使得它们各自指向对方原来的位置,本介绍了关于C++地址交换的实现,需要的朋友可以参考下
    2024-11-11

最新评论