当前位置: 首页 > news >正文

C语言初阶小练习4(不用临时变量交换数值)

题目:不能创建临时变量(第三个变量),实现两个整数的交换


1.用临时变量来实现(常规写法)

这种方法是最直观的,但题目要求不使用临时变量,所以这里仅作为对比参考。

用创建临时变量来写:逻辑清晰,更便于理解,也是在正常情况下的书写方法。

int main()
{//创建临时变量int a = 3;int b = 5;printf("%d %d\n", a, b);int tmp = a;//临时变量tmpa = b;b = tmp;printf("%d %d\n", a, b);return 0;
}

2.不创建临时变量的写法

2.1第一种写法:

通过加减运算的方法,在整数范围足够大(不溢出)的情况下可以工作。

注意:如果ab的和超出了int的范围,这种方法会导致溢出,从而无法正确交换值

int main()
{int a = 3;int b = 5;printf("%d %d\n", a, b);a = a + b;b = a - b;a = a - b;//当a和b分别不溢出的时候,但是和溢出的时候,不合适printf("%d %d\n", a, b);
}

2.2第二种写法:

用^(异或操作符)来实现目的

利用了异或运算(XOR)的特性来交换两个整数的值,且不涉及任何溢出问题。

int main()
{int a = 3;int b = 5;printf("%d %d\n", a, b);a = a ^ b;b = a ^ b;//(a^b)^b=aa = a ^ b;//(a^b)^a=b	//当a和b分别不溢出的时候,但是和溢出的时候,不合适printf("%d %d\n", a, b);return 0;
}

1.a = a ^ b;:此时a存储了a和b的异或结果。


2.b = a ^ b;由于a现在是a XOR b,所以b = (a XOR b) XOR b。根据异或运算的性质,x XOR x = 0和x XOR 0 = x,所以b变成了原来的a。


3.a = a ^ b;:此时b已经是原来的a,所以a = (a XOR b) XOR a。由于b是原来的a,所以a变成了原来的b


http://www.mrgr.cn/news/56411.html

相关文章:

  • web网页QQ登录
  • 特种设备作业电梯维修作业
  • 华为鸿蒙开发笔记
  • 玩转springboot之springboot异步执行
  • C++学习实例:入门,了解其输入输出
  • Unity中面试遇到的问题--C#--dynamic
  • dolphinscheduler创建工作流及工作流中DataX的使用(简单操作)
  • TikTok账号被限流怎么解决?
  • 【二】企业级JavaScript开发之代码编辑器
  • 什么是表单数据
  • 群晖通过 Docker 安装 Gitea
  • 两个线程交替打印数字
  • 鸿蒙开发:两个重磅更新,鸿蒙版微信要来了!
  • Java学习Day50:唤醒八戒(Excel相关)
  • 中间件之Seata
  • Python酷库之旅-第三方库Pandas(160)
  • Linux基础命令(入门)
  • Java框架之MyBatis Plus
  • linux介绍与基本指令
  • Linux系统基础-进程间通信(2)_命名管道和System V通信
  • 【linux】线程 (三)
  • python虚拟环境安装
  • [LeetCode] 814. 二叉树剪枝
  • github加速 DevSidecar 1.8.8
  • 免费送源码:Java+ssm+MySQL SSM二手物品管理系统 计算机毕业设计原创定制
  • AutoSar AP CM实例说明符的使用方法总结