现在有个题是:

要求不创建临时变量,来交换a,b的值,问有几种办法

首先先来一个创建临时变量交换的

 int temp=0;temp=a;a=b;b=temp;

相信大家也都会,哈哈哈,就不多讲了

加减法

接下来这种就是加减法,用数学的思维来解决问题

a=a+b;
b=a-b;
a=a-b;

然后还有一种就是利用计算机二进制的特性,异或操作符进行

异或法

a=a^b;
b=a^b;
a=a^b;

异或^操作符:是一个位操作符,针对于二进制位(比特位)的操作。
规则:两个数在同一个二进制位(比特位),相同为0;不同为1。

异或操作符的一些性质:
任何一个数与自己异或都等于0:

a^a=0;

3.2 任何一个数与0进行异或操作等于它自己:

a^0=a;

3.3 异或运算满足交换律,结合律 :

a^b=b^a;
(a^b)^c=a^(b^c);

C语言不用临时变量交换a,b的值相关推荐

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

    在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量. 类似于: temp=a;a=b;b=temp; 这样的语句,如果在没有临时变量的情况下,该如何做呢? 网络上的人们给出了两种方法: 一. ...

  2. 交换数字(不用临时变量)

    编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值. 示例: 输入: numbers = [1,2] 输出: [2,1] 示例代码: class Solution(obj ...

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

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

  4. 不创建临时变量交换两个数,这才是高手

    不创建临时变量交换两个数?这才是高手 1.基本介绍 1.代码编写 总结 1.基本介绍 交换两个数,想必大家都很熟悉,也很容易写出来就可以实现,即创建一个临时变量,就可以完成两个数的交换,然后更牛逼的大 ...

  5. C语言中临时变量写在哪里,C语言中不允许创建临时变量,交换两个数的内容

    在C语言中可以通过建立临时变量来实现两个变量的交换,当不允许建立临时变量时,应该怎样实现两变量的交换呢? 假设有两个变量num1和num2:下面通过两种方法进行分析. 方法一:利用加减法.具体算法分析 ...

  6. 不允许创建临时变量交换两个变量的内容

    在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量.如果在没有临时变量的情况下,该如何做呢? 方法一:C语言提供的异或运算就可以实现这样的操作.异或运算符"^"也称&qu ...

  7. 不用额外变量交换两个整数的值

    题目 如何不用任何额外变量交换两个整数的值 基本思路 如果给定整数a和b使用如下三行代码即可交换a和b的值: a = a ^ b b = a ^ b a = a ^ b 如何理解这三行代码的具体功能呢 ...

  8. C语言异或交换两个数的原理解析-大厂面试题:不使用第三变量交换两个数的值

    常用操作交换两个数的值 常用的交换两个数值的方法一般是采用第三个变量,这种方法简单易懂,用代码举例 int main() {//交换两个整形变量int a = 3;int b = 5;int c = ...

  9. C语言字符型变量的存储和取值

    目录 1.问题引入 2.字符型变量的存储 3.字符型变量的取值 4.字符型变量中的-128 5.取值转换图 1.问题引入 我们知道,在C语言中,一个字符型数据占8个bit位,那么当我们定义一个字符型数 ...

最新文章

  1. delphi ScriptGate 调用JS
  2. GO语言有哪些优势?怎样入门?
  3. 手机被偷后如何让小偷不能用
  4. SSM中使用Mybatis的PageHelper插件实现分页
  5. AI基础:数据划分、超参数调整、正则化
  6. 使用 Boost.Multiprecision 来实现高精度高斯-拉盖尔正交积分
  7. C++11 - sizeof用于类成员
  8. Python 爬虫学习 系列教程
  9. 用大白话彻底搞懂 HBase RowKey 详细设计
  10. oracle ado6,c# ado 连接数据库 六步曲
  11. NPOI导出excel(带图片)
  12. adb命令安装apk到手机_安装在手机上自动化测试apk-傻猴
  13. linux首次安装mysql密码是多少,Linux小白,初次安装MySQL,大神请绕路
  14. 三星Galaxy Note 20系列将首发Exynos 992:性能超骁龙865
  15. java关于Timer schedule执行定时任务 1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等...
  16. web前端顶岗实习总结报告_web前端实习报告
  17. 主流PCB画图软件的对比区别(AD、Pads、Allegro)
  18. 360浏览器打不开微信的连接服务器,360浏览器打不开网页怎么办-解决360浏览器打不开网页的方法 - 河东软件园...
  19. 用Mailgun邮寄出去!
  20. 联想服务器x3250 m5文档,【联想x3250 M5参数】联想x3250 M5系列服务器参数-ZOL中关村在线...

热门文章

  1. c语言漫函数,漫谈C指针:函数名其实也是指针
  2. 取部门工资前三高的所有员工 -- sql 面试(三)
  3. jdk8 stream API
  4. Redis系列(五)Redis持久化机制
  5. 关于CRMEB 商城系统商业授权的那些事儿
  6. 再php用if语句实现成绩,php中if语句怎么编写学生成绩等级
  7. 存储程序通用计算机设计方案,第1章计算机设计方案基本原理.doc
  8. CorelDRAW 2019.0安装教程(带安装包)
  9. 微信小程序影视评论交流平台系统毕业设计毕设(7)中期检查报告
  10. Bogus,bad length value xxx IP Payload length