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

C语言--不创建第三个变量,实现对两个数字的交换


我们先来看一下,创建临时变量交换两个数字。

#include<stdio.h>
{
    int a=2;
    int b=3;
    int tmp=0;
    printf("before:a=%d b=%d\n",a,b);
   
     tmp=a;
     a=b;
     b=tmp;
          
    printf("after:a=%d b=%d\n",a,b);
    return 0;
}

图解:

 运行结果:


再看一下不创建的方法

方法一:加加减减

//加减法   缺点可能会溢出 
int main()
{
 int a=3;
 int b=5;
 printf("before:a=%d b=%d\n",a,b);

 a=a+b;
 b=a-b;
 a=a-b;
 printf("after:a=%d b=%d  ",a,b);
}

图解

 

 运行结果:


 法二:按位异或

按位异或  相同的位不一样就为1,否则是0,注意不是指数(二进制)

 //代码的可读性较差,但是面试题可能会考
 int main()
 {
	 int a=3;
	 int b=6;
	 printf("brfore :a=%d b=%d\n",a,b);
		 a=a^b;
		 b=a^b;
		 a=a^b;
	 printf("after :a=%d b=%d",a,b);
 }

图解;假设是1个字节 

 运行结果:


创作不易,如果对你有帮助的话,给个免费的赞鼓励一下小编吧!🍗


http://www.kler.cn/a/151951.html

相关文章:

  • springboot使用定时任务
  • 不是默认进入Linux|总是自动进入windows系统
  • conda环境下,安装所有包都报错:No module named ‘certifi‘
  • ICC2:使用analyze_lib_cell_placement检查lib cell的pass rate
  • 游戏开发团队配置与协作流程
  • 智能优化算法应用:基于旗鱼算法无线传感器网络(WSN)覆盖优化 - 附代码
  • Linux设置Nginx开机自启
  • JS:获取当前日期是本年度的第几周
  • 如何在3dMax中实现创建对象时自动指定材质?
  • Sealos 云操作系统私有化部署教程
  • 开闭原则:提高扩展性的小技巧
  • shared_ptr子类指针转换成父类指针
  • 主流数据库类型总结
  • 【Web】攻防世界Web_php_wrong_nginx_config
  • Windows Terminal CMD 终端配置方案: 不只是酷炫外观
  • 论文导读 | 10月专题内容精选:人的预测
  • 论文笔记:详解NEUPSL DSI
  • 【MySQL:从零开始练级】环境安装与基础认识
  • redis运维(二十)redis 的扩展应用 lua(二)
  • Windows系列:windows2003-建立域