一.通过简单运算交换两个变量的值

#include<stdio.h>
int main()
{int i = 5, j = 6;i = i + j;j = i - j;i = i - j;printf("交换后i=%d,j=%d", i, j);return 0;
}

优点:不引入任何临时变量,通过简单加减赋值就可以交换两数的值

缺点:倘若i与j过大,导致i+j超过int整型范围,该方法不适用

二.通过引入临时变量t交换两个变量的值

#include<stdio.h>
int main()
{int i = 5, j = 6, t;t = i;//先将i的值赋给t,这样i的值有备份后可以改变i的值i = j;//将j的值赋给ij = t;//最后将i存在t中的值赋给jprintf("交换后i=%d,j=%d", i, j);return 0;
}

优点:不用担心变量的大小问题

缺点:引入临时变量t

拓展:通过指针来交换两个变量的值(上面方法的经典复刻)

#include<stdio.h>
int main()
{int i = 5, j = 6, t;int* ptr1 = &i;int* ptr2 = &j;t = *ptr1;*ptr1 = *ptr2;*ptr2 = t;printf("交换后i=%d,j=%d",i, j);return 0;
}

(你说一个个换了多少种方法了?改过了吗,换汤不换药啊)

三.使用异或操作符

#include<stdio.h>
int main()
{int i = 5, j = 6;//一个数异或其本身其二进制全为0,0异或其他数为该数本身i = i ^ j;j = i ^ j;i = i ^ j;//这里相当于i=i^j^j=aprintf("交换后i=%d,j=%d",i, j);return 0;
}

该方法简单高效,在某些场合下有奇效(人家异或操作符也有理由说的,我用的是什么操作符....)

这里力扣第136题:只出现一次的数字  就是对异或操作符的高效应用(我劝你先把异或操作符的概念先搞懂.....)

初学者交换两个变量的值的三种方法相关推荐

  1. 交换两个变量的值的三种方法

    方法一:定义临时变量法 运用此方法比较简单 public class 定义临时变量 {public static void main(String[] args) {int v1=1;int v2=2 ...

  2. php比较两个变量的值_总结PHP不用第三个变量交换两个变量的值的几种方法

    "PHP不用第三个变量交换两个变量的值"这个题看到过好多次了,看来面试确实喜欢考这道题.今天,对于这个题目,我自己总结了几种方法,可能不全,大家来互相补充. 有些仅适用于字符串,方 ...

  3. 交换两个变量的值的4种方法,你了解了吗?

    目录 一.引入第三变量 二.不引入第三变量 1.a = a + b; b = a - b; a = a - b; 2.利用异或 3.巧妙运用优先级 总结: 在我们的开发中,或者在我们平时的练习中,常常 ...

  4. 【C语言】交换两个变量的值 的n种方法

    文章目录 方法一 借助第三方 方法二 变量自加减 方法三 巧用异或位运算 方法一 借助第三方 借助第三方临时储存一个变量的值,是我们最常用的方法.这个方法不仅可以交换两个整数,任意类型的两个变量交换, ...

  5. 交换两个变量的值(三种方式、完整代码)

    第一种:建立一个变量 temp,通过temp进行交换(需要建立一个新的变量) 第二种:位运算符(异或^)    (不需要新建立新的变量) 第三种:a=a+b    (不需要新建立新的变量) 例如: i ...

  6. 交换两个变量的值(4种方法)

    第一种,最简单最常用的. #include<stdio.h> int main() {int a=1,b=2; int c; c=a;a=b;b=c; printf("%d,%d ...

  7. 交换a,b值的三种方法

     给定两个数a=10,b=20交换a与b的值的三种方法 1.首先第一种是我们最容易想到的,定义一个空tmp,用其交换,在三个数按从小到大(或从大到小)排序输出时曾用到过 2.第二种方法,用加减法来 ...

  8. 交换两个变量的值,不使用第三个变量的四种法方

    交换两个变量的值,不使用第三个变量的四种法方 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码如下: int a,b; a=10; b=15; int t; t=a; a= ...

  9. 不用临时变量,交换两个变量的值

    不用临时变量,交换两个变量的值 a=a^b;     b=a^b;     a=a^b; 或者   a=a+b;     b=a-b;     a=a-b;

最新文章

  1. linux 批量重命名文件
  2. Hashmap,Set,Map,List,ArrayList的区别
  3. php 多维数组 array sort 排序 :array_multisort
  4. Notepad++中的高级查找
  5. TS - 问题解决力 - 上篇
  6. flink的datastream中的closewith与反馈环(feed stream)的意思
  7. “百变”Redis带你见识不同场景下的产品技术架构
  8. Elasticsearch7.15.2 修改IK分词器源码实现基于MySql8的词库热更新
  9. python3常用内置函数总结
  10. Windows XP 32位环境下VS2008+DDKXP驱动开发环境配置
  11. CPU cache侧信道攻击
  12. 四阶龙格库塔法的计算例子
  13. 斐波那契数列(Fibonacci)的三种JAVA解法
  14. 酒香还怕巷子深?如何打造一个优秀的GitHub开源项目
  15. Notes 20180311 : String第三讲_深入了解String
  16. 【Linux】一张图让你读懂Linux内核运行原理
  17. 【论文笔记】SIFA——基于GAN的双向跨模态无监督域适应框架
  18. 使用PS(Adobe Photoshop CC)设计Banner
  19. php如何获取json里的值,如何从JSON PHP正确获取值?
  20. 基金代销-业务流程及数据交换图

热门文章

  1. 块存储、文件系统存储以及对象存储的特性及其应用
  2. Linux系统输入法黑屏问题
  3. 青春励志演讲稿——我的理想
  4. python安全编程教程_[ichunqiu笔记] python安全应用编程入门
  5. 齐博x2新功能:如何对CMS等频道内容进行数据分表进行文本储值
  6. Go 语言GC原理概述
  7. 洛谷P1722 矩阵Ⅱ (卡塔兰数)
  8. 关于 ue4 LogScript: Warning: Attempted to access via property, but is pending kill 问题
  9. 单片机模拟QC3.0,实现0.2V电压微调
  10. 安装pip和设置pycharm