在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量。如果在没有临时变量的情况下,该如何做呢?

方法一:C语言提供的异或运算就可以实现这样的操作。异或运算符“^”也称“XOR”运算符,它的规则是:若参加运算的两个二进位同号,则结果为0(假);异号为1(真)。

即: 0 ^ 0 = 0,

           0 ^ 1 = 1,

           1 ^ 0 = 1,

           1 ^ 1 = 0。

      例如:a=5, b=9, 要想交换a和b的值,我们可以这样做:

           a = a ^ b;

           b = b ^ a = b ^ a ^ b = a   (此时已经将a的值赋给了b)

           a = a ^ b = a ^ b ^ a = b   (将b的值赋给了a,交换完成)

C语言代码如下:

# include <stdio.h>int main()
{int a, b;scanf("%d %d", &a, &b);a = a ^ b;b = b ^ a;a = a ^ b;printf("交换后的值为:");printf("%d %d\n", a, b);return 0;
}

方法二:第二种方法是加减法,其实原理和第一种方法如出一辙。

即:a = a + b;

            b = a - b = a + b - b = a;   (将a赋值给了b)

            a = a - b = a + b - a = b;   (将b赋值给了a)

C语言代码如下:

# include <stdio.h>int main()
{int a, b;scanf("%d %d", &a, &b);a = a + b;b = a - b;a = a - b;printf("交换后的值为:");printf("%d %d\n", a, b);return 0;
}

干货小知识: sizeof 在 计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。

转载于:https://blog.51cto.com/814193594/1697516

不允许创建临时变量交换两个变量的内容相关推荐

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

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

  2. C++不借助第三变量交换两个变量的值

    C++不借助第三变量交换两个变量的值 源代码: #include<iostream> using namespace std; int main(){int x,y;cout<< ...

  3. PHP中不用第三个变量交换两个变量的值

    相信大家在PHP面试或者学习中经常会遇到这个问题就是"不用第三个变量来交换两个变量的值",今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个 ...

  4. 不使用第三变量交换两个变量的值

    在 Java 中,经常会需要交换两个变量的值,我们一般是使用第三变量完成,比如 temp = a; a = b; b = temp; 这样的写法确实能达成目标,但因此而引入了第三变量,对资源的消耗增加 ...

  5. 不借助第三方变量交换两个变量的值(多种方法)

    转载自:https://blog.csdn.net/kangkermit/article/details/21371159 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码 ...

  6. 不用引入第三变量交换两个变量的值

    前几天发现了一个问题:有人告诉我,要进行变量交换,就必须引入第三变量! 假设我们要交换a和b变量的值,如果写成 int a=5,b=10; a=b; b=a; 那么结果就是两个都是10,理由不言而喻. ...

  7. 不使用第三个变量交换两个变量的值

    小结一下: 给出两个变量:var a = 1, b = 2; 方法一: a = a + b; b = a - b; a = a - b; a, b 的值已经交换. 方法二: a = a ^ b; b ...

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

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

  9. C++:不用申请变量交换两个变量的值

    zz:http://yangjiayu.com/archives/83 http://hi.baidu.com/sunjoe/blog/item/895aa809d916fb226b60fba5.ht ...

最新文章

  1. Linux下锁用户与解锁问题
  2. :new与:old的用法
  3. 软键盘挡住EditText
  4. app启动页数秒加载 代码_iOS 底层探索 - 应用加载
  5. QT的QLinkedListIterator类的使用
  6. IO多路转接之poll
  7. 轻松实现突破网管限制(SoftEther实际应用)
  8. 互联网晚报 | 2月28日 星期一 |​工信部:最大限度降低缺芯影响;​工信部:今年新建5G基建60万个...
  9. html 去文本框中的双引号_前端·HTML基础
  10. VM : linux虚拟机上挂在U盘
  11. python 接口自动化测试_Python-基于数据驱动的接口自动化测试
  12. SWIFT学习笔记01
  13. 编写一个程序解决选择问题。令k=N/2。
  14. c语言中常用符号,C语言中常用的符号.doc
  15. 在类中用class时数据是共有还是私有_C++判断题题库1
  16. Linux下rpm安装软件
  17. 【黑苹果】联想Lenovo ThinkPad E550+i55200U+macos10.13.x efi文件下载
  18. 2018java面试(1)- 自我介绍和项目介绍
  19. 八、Servlet容器
  20. Html+Css+Js轮播图实现

热门文章

  1. MySQL命名、设计及使用规范《MySQL命名、设计及使用规范》
  2. MongoDB安装的坑
  3. Android自定义视图二:如何绘制内容
  4. ASP.NET MVC中,通用的异常处理
  5. SparkSql之DataFrame操作
  6. 一个通用的单元测试框架的思考和设计02-设计篇
  7. RHEL5***检测系统(IDS)snort的安装与配置,建议用BASE做控制台
  8. Delphi 与 DirectX 之 DelphiX(80): TDIB.BlendPixel();
  9. spring随笔(三)DataBase
  10. css选择指定class的元素