zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    转面函数
    物体零层级的中间变量
    建模过程中的模型模式。
    关于位置的东西 这里的写法。
    建模小函数
    modPanel.getCurrentObject() 当前选择的修改层级的 基础物体。
    由程序改写的对齐资料。还是资料不完善
    界面资料 用的是内部数子外部字符显示,计算时还是用数字因为数字不字符快
    可能会更新场景 这个就是换了全局函数防止出错,加入的报错系统
    repo sync problems – Android Eclair
  • 原文地址:https://www.cnblogs.com/leee/p/4135852.html
Copyright © 2011-2022 走看看