交换两个变量以及不用第三个变量交换两个变量

这个可能网上一搜一大把一大把的,可是今天我看到了一个新的写法,所以就写这篇文章记录一下,不不知道百度有没有,没去搜索!

方法1:这是最简单,也是最常用的一个方法!

            int n1 = 10, n2 = 20;
            int tmp = n1;
            n1 = n2;
            n2 = tmp;
            Console.WriteLine("n1={0},n2={1}", n1, n2);
            Console.ReadKey();

方法2:算术运算

            //交换两个变量,不使用第三个变量
            int n1 = 10, n2 = 20;
            n1 = n1 + n2;
            n2 = n1 - n2;
            n1 = n1 - n2;
            Console.WriteLine("n1={0},n2={1}", n1, n2);
            Console.ReadKey();

方法3:这个是我今天要记录的重点

            int n1 = 10, n2 = 20;
            n2 = n1 + (n1 = n2) * 0;
            Console.WriteLine("n1={0},n2={1}", n1, n2);
            Console.ReadKey();

方法4:多写点,面试的时候,逼格又上涨了一节!

           //位运算
            int n1 = 10, n2 = 20;
            n1 = n1 ^ n2;
            n2 = n1 ^ n2;
            n1 = n1 ^ n2;

            Console.WriteLine("n1={0},n2={1}", n1, n2);
            Console.ReadKey();

扩展:交换两个变量,封装成方法

//这样直接交换的话,你会发现输出的值并没有变!
          int n1 = 10, n2 = 20;
            Swap( n1,  n2);
            Console.WriteLine("n1={0},n2={1}", n1, n2);
            Console.ReadKey(); 

private static void Swap( int n1,  int n2)
        {
            int tmp = n1;
            n1 = n2;
            n2 = tmp;
        }
//-----------------------------------------------------------------------------------------
//把变量前边加上“ref” 把值类型变为引用类型(不明白可以百度这两个类型的区别)
            int n1 = 10, n2 = 20;
            Swap(ref n1, ref n2);
            Console.WriteLine("n1={0},n2={1}", n1, n2);
            Console.ReadKey();

private static void Swap(ref int n1, ref int n2)
        {
            int tmp = n1;
            n1 = n2;
            n2 = tmp;
        }

  

时间: 2024-12-29 01:44:53

交换两个变量以及不用第三个变量交换两个变量的相关文章

定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句 以及 不用 第三个数,交换 a,b的值

无意中 一篇博文,介绍这个问题,引起了我的兴趣. 博文中 介绍了 三种方法: 1. #define max(a,b) ((((a)-(b))&(1<<31))?(b):(a)) 2. #define max(a,b) ((((long)((a)-(b)))&0x80000000)?(b):(a)) 3 #define max(a,b) (((abs((a)-(b)))==((a)-(b)))?(a):(b)) 第一种方法 和第二种方法 的原理都是一样的,就是 根据 (a) -

两个变量,不用第三个数就进行切换数值

var a = 5; var b = 6; //第一种方法: a = a+b; b = a - b; a = a - b; //第二种方法: a = [a,b]; b = a[0]; a = a[1];

PHP中不用第三个变量交换两个变量的值

相信大家在PHP面试或者学习中经常会遇到这个问题就是“不用第三个变量来交换两个变量的值”,今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个变量的值. 第二种方法呢,稍加思考我们就会用到PHP中的函数来实现 第三种方法呢,我们来采用PHP中提供各种字符串分割函数来实现. 简单的题目不同的思想就会有不同的解法,期待更多的答案.

php不用第三个变量,交换两个数的值

//字符串版本 结合使用substr,strlen两个方法实现 $a="a"; $b="b"; echo '交换前 $a:'.$a.',$b:'.$b.'<br />'; $a.=$b; $b=substr($a,0,(strlen($a)-strlen($b))); $a=substr($a, strlen($b)); echo '交换后$a:'.$a.',$b:'.$b.'<br />'; echo '------------------

PHP不用第三变量交换2个变量的值的解决方法

以前做过一道php面试题是这样的:不使用第三个变量实现交换两个变量的值.一般都是借助第三个中间变量来实现原来两个变量的值交换,但是这道题却要求不能使用中间变量,这对于初学者来说也算是一个难题了.网上找到的几种方法总结如下: 复制代码 代码如下: //字符串版本 结合使用substr,strlen两个方法实现 $a="a";$b="b";echo '交换前 $a:'.$a.',$b:'.$b.'<br />';$a.=$b;$b=substr($a,0,(

交换两个变量的值的三种实现方式

交换两个变量的值的方式: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>交换两个变量的值的方式</title> </head> <body> <script> //第一种方式:使用第三方的变量进行交换 var num1 = 11; var num2 = 12; //把

&lt;22&gt;【掌握】指针变量概念及定义方法+【理解】两变量值交换的方法+【掌握】总结*使用场合

[掌握]指针变量概念及定义方法 1.指针变量 用来存放地址的变量,就是指针变量 2.指针? 就是地址,地址是个常量 3.指针变量的定义 数据类型 *指针变量名; int *p; //定义了一个指针变量,变量名是p //int表示,p只能存放一个int类型的变量的地址 char *p1; //定义了一个指针变量,变量名是p1 //p1只能存放一个char类型数变量的地址 int num=10; char *p = &num; //警告 4.指针变量定义的注意事项 1)“*” 必须得有,如果没有就相

【转】一个数组中有三个数字a、b、c只出现一次,其他数字都出现了两次。请找出三个只出现一次的数字。

转自:http://zhedahht.blog.163.com/ 题目:一个数组中有三个数字a.b.c只出现一次,其他数字都出现了两次.请找出三个只出现一次的数字. 分析:在博客http://zhedahht.blog.163.com/blog/static/2541117420071128950682/中我们讨论了如何在一个数组中找出两个只出现一次的数字.在这道题中,如果我们能够找出一个只出现一次的数字,剩下两个只出现一次的数字就很容易找出来了. 如果我们把数组中所有数字都异或起来,那最终的结

Linux系统下修改环境变量PATH路径的三种方法

比如要把/etc/apache/bin目录添加到PATH中,方法有三: 1.#PATH=$PATH:/etc/apache/bin 使用这种方法,只对当前会话有效,也就是说每当登出或注销系统以后,PATH 设置就会失效 2.#vi /etc/profile 在适当位置添加 PATH=$PATH:/etc/apache/bin (注意:= 即等号两边不能有任何空格) 这种方法最好,除非你手动强制修改PATH的值,否则将不会被改变 3.#vi ~/.bash_profile 修改PATH行,把/et