Fork me on GitHub

李可

导航

统计

c#是否参入中间变量交换变量的几种方法

大家很熟悉知道,交换变量经常的使用的一种方法是使用第三个变量,也符合正常人的思维逻辑,但是还有其他的一些方法来实现,但是有点“偏门”,记住就好了。下面就列举这几种方法。

第一种方法,会用到参数的方法再来修稿。

复制代码
 1 using System;
 2 namespace Exercise
 3 {
 4     class Program
 5     {
 6         private static void Main(string[] args)
 7         {
 8             int num1 = 10;
 9             int num2 = 5;
10             int temp = num1;
11             num1 = num2;
12             num2 = temp;
13             Console.WriteLine("num1={0},num2={1}",num1,num2);
14             Console.ReadKey();
15         }
16     }
17 }
View Code
复制代码

第二种方法,用到数轴上点到点之间的距离的使用,num2-num1;以下图示通过普通的加减运算来实现;

复制代码
 1 using System;
 2 namespace ConsoleApplication1
 3 {
 4     class Program
 5     {
 6         static void Main(string[] args)
 7         {
 8             int num1 =3;
 9             int num2 = 7;
10             num1 = num2 - num1;//算出距离 并赋值给num1,被赋值的变量值已经变成了距离,另一变量没有变。num1被赋值成距离。 num1=4,num2=7
11             num2 = num2 - num1;//num2减去距离,就等于num1;此时num1还没有交换成num2;完成“num2”的交换成num1。num1=4 num2=3
12             num1 = num2 + num1;//被赋值成的num1值的num2加上距离再赋值成num1,完成num1的被交换成。num1=7,num2= 3
13             Console.WriteLine("num1={0},num2={1}", num1, num2);
14             Console.ReadKey();
15         }
16     }
17 }
View Code
复制代码

第三种方法,是位运算,异或,理解:先异或存num1点的话,第二步必须求num2,第三步剩下num1了。 格式和数轴类似,只要把+ -号全变成^就实现。

复制代码
 1 using System;
 2 namespace ConsoleApplication1
 3 {
 4     class Program
 5     {
 6         static void Main(string[] args)
 7         {
 8             int num1 =3;
 9             int num2 = 7;
10             num1 = num2 ^ num1;//算出距离 并赋值给num1,被赋值的变量值已经变成了距离,另一变量没有变。num1被赋值成距离。 num1=4,num2=7
11             num2 = num2 ^ num1;//num2减去距离,就等于num1;此时num1还没有交换成num2;完成“num2”的交换成num1。num1=4 num2=3
12             num1 = num2 ^ num1;//被赋值成的num1值的num2加上距离再赋值成num1,完成num1的被交换成。num1=7,num2= 3
13             Console.WriteLine("num1={0},num2={1}", num1, num2);
14             Console.ReadKey();
15         }
16     }
17 }
View Code
复制代码

查看大神博客,自己细节把握。

 

posted on   李可在江湖  阅读(650)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示