C#开发笔记之07-如何实现交换2个变量的值而不引入中间变量?
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/963 访问。
这里给出常见的7种方法,仅供大家参考,部分实现C#不支持。
1、加减减法
private static void Swap1(ref int a, ref int b) {
a = a + b;
b = a - b;
a = a - b;
}
2、减减加法
private static void Swap2(ref int a, ref int b) {
a = b - a;
b = b - a;
a = b + a;
}
3、加减赋值法
private static void Swap3(ref int a, ref int b) {
//C#不支持此方法,C或C++可以
//a = a + b - (a = b);
}
4、加减减赋值法
private static void Swap4(ref int a, ref int b) {
//C#不支持逗号表达式,C或C++可以
//a = (a = a + b, b = a - b, a - b);
}
5、异或法
private static void Swap5(ref int a, ref int b) {
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
6、汇编法
__asm
{
mov eax,a;
mov ecx,b;
push dword ptr[eax];
push dword ptr[ecx];
pop dword ptr[eax];
pop dword ptr[ecx];
}
7、加乘赋值法
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/963 访问。
private static void Swap7(ref int a, ref int b) {
b = a + 0 * (a = b);
}
请注意:方法3、4、6,C#语言不支持。
C#开发笔记之07-如何实现交换2个变量的值而不引入中间变量?的更多相关文章
- python学习笔记(八)函数return多个值,列表推导式和交换两个变量的值
函数return多个值: 补充知识点:写代码得到时候少用全局变量: 1.不安全 2.会一直占着内存不释放 函数多个return值,那么会把这几个return的值都放在一个元组里面,然后返回 def h ...
- python不使用第三方变量,交换两个变量的值
#不使用第三个变量交换两个变量的值 a=1 b=2 a,b=b,a#python的直接交换 #另一种交换方法 a=a+b#a=3 b=2 b=a-b#a=3 b=1 a=a-b#a=2 b=1 pri ...
- C语言:指针实现交换两个变量的值
用指针交换两个变量的值(10分) 题目内容: 用指针交换两个变量的值 主函数参考: int main( ) { int a,b; scanf("%d%d",&a,& ...
- 【剑指offer】不使用新变量,交换两个变量的值,C++实现
# 题目 不使用新变量,交换两个变量的值. # 思路 方法一:使用加减法操作,交换两个变量的值. A = A+B B = A-B A = A-B 方法二:使用异或运算,交换两个变量的值 A = A^B ...
- PHP中不用第三个变量交换两个变量的值
相信大家在PHP面试或者学习中经常会遇到这个问题就是“不用第三个变量来交换两个变量的值”,今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个变量的值. 第二种方 ...
- PHP不用第三变量交换2个变量的值的解决方法
以前做过一道php面试题是这样的:不使用第三个变量实现交换两个变量的值.一般都是借助第三个中间变量来实现原来两个变量的值交换,但是这道题却要求不能使用中间变量,这对于初学者来说也算是一个难题了.网上找 ...
- python中如何调用函数交换两个变量的值
python中如何调用函数交换两个变量的值 所有代码来在python3.7.1版本实现 以下实例通过用户输入两个变量,并相互交换: 方法一: def swap(a,b): # 创建临时变量,并交换 ...
- JS基础语法---练习:交换两个变量的值
* JavaScript简称为JS * JavaScript是什么? * 是一门脚本语言:不需要编译,直接运行 * 是一门解释性的语言:遇到一样代码就解释一行代码 * C#语言 ...
- PHP-不涉及第三个变量交换两个变量的值
不涉及第三个变量交换两个变量的值 方法1:使用加减法 <?php $a = 1; $b = 2; $a = $a+$b; $b = $a-$b; $a = $a-$b; printf(" ...
随机推荐
- 【真实分享】学习linux!让我工资翻5倍!从月薪3000到年薪18W!只用了六个月!
月薪3000到年薪18W,我用了六个月时间.从只会皮毛,到一家公司的运维工程师主力,我的故事蛮神奇的,今天和大家分享一下我自己的经历. 我今年26岁,之前做个体,修过电脑,卖过电脑,做过桌面运维,一直 ...
- javascript中的设计模式之发布-订阅模式
一.定义 又叫观察者模式,他定义对象间的依照那个一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将的到通知.在javascript中,我们一般用时间模型来替代传统的发布-订阅模式 二 ...
- Mysql concat() group_concat()用法
数据库表: 关键字:concat 功能:将多个字符串连接成一个字符串 使用:concat(column1, column2,...) 字段中间可以加连字符 结果:连接参数产生的字符串,如果有任何一个 ...
- Cypress系列(41)- Cypress 的测试报告
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 注意 51 testting 有一篇文章 ...
- 数据库(十一):Navicat可视化工具
进击のpython ***** 数据库--Navicat可视化工具 那命令行敲了那么久,难免影响开发效率 所以说就出现了一款可视化开发工具Navicat 下载位置:https://pan.baidu. ...
- PPT如何转换为Word文档?
首先,打开你要转换的PPT,按F12键,此时会跳出另存为窗口,如图: 然后点击保存类型,选择RTF文件,保存到指定路径即可. 找到保存好的RTF文件,用word打开即可.
- Android:自定义BaseActivity基类
使用BaseActivity可以封装一些重复代码例如设置标题栏颜色,封装一些工具类... 主要功能: 封装Toast 新建一个BaseActivity继承自Activity package com.o ...
- 关于if后有无else谜题
在自定义函数中 for(i=1;i<=6;i++) { if(a%i==0) return 0; else return 1; } 意思是,如果有一个除不尽就返回零,有一个除尽会立刻返回一. 如 ...
- java图片压缩工具类(指定压缩大小)
1:先导入依赖 <!--thumbnailator图片处理--> <dependency> <groupId>net.coobird</groupId> ...
- Seaborn实现回归分析
import numpy as np import pandas as pd from scipy import stats,integrate import matplotlib.pyplot as ...