不用中间变量实现两个数的交换

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ExchangeDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            int a=7, b=8;
            Console.WriteLine("交换之前\ta:" + a + "\tb:" + b);
            //加减法交换
            a = a + b;
            b = a - b;
            a = a - b;
            Console.WriteLine("交换之后\ta:" + a + "\tb:" + b + "\r\n");

            Console.WriteLine("交换之前\ta:" + a + "\tb:" + b);
            //乘除法交换,b不为0
            a = a * b;
            b = a / b;
            a = a / b;
            Console.WriteLine("交换之后\ta:" + a + "\tb:" + b + "\r\n");

            Console.WriteLine("交换之前\ta:" + a + "\tb:" + b);
            //异或法交换,异或法可以完成对整型变量的交换,对于浮点型变量它无法完成交换
            a ^= b;//a=a^b
            b ^= a;//b=b^(a^b)=b^a^b=b^b^a=0^a=a
            a ^= b;//a=(a^b)^a=a^b^a=a^a^b=0^b=b
            Console.WriteLine("交换之后\ta:" + a + "\tb:" + b + "\r\n");

            Console.WriteLine("交换之前\ta:" + a + "\tb:" + b);
            a = a + b - (b = a);
            Console.WriteLine("交换之后\ta:" + a + "\tb:" + b + "\r\n");

            Console.WriteLine("交换之前\ta:" + a + "\tb:" + b);
            b = a + (a = b) * 0;
            Console.WriteLine("交换之后\ta:" + a + "\tb:" + b + "\r\n");
            Console.Read();
        }
    }
}

posted @ 2015-12-06 09:59  BloggerSb  阅读(273)  评论(0)    收藏  举报