資料交換
資料的交換在處理資料上很常使用,也是在初學程式設計上會碰到的問題,以下介紹幾種方法:
假設欲將AB內的資料要相互對調
()利用相同型態的額外變數(假設是C)當緩衝,交換資料,方式如下:

		範例1:
		::::::::::::::::::::::::::::::::::::::::::::::
		//交換AB
		void main()
		{
			int A=10,B=20,C;
			C = B;
			B = A;
			A = C;
		}

		::::::::::::::::::::::::::::::::::::::::::::::
()以下的方式是不需要額外的空間來做交換:
   (1)利用加減法運算來達到資料交換的目的,方式:
		範例2:
		::::::::::::::::::::::::::::::::::::::::::::::
		//交換AB
		void main()
		{
			int A=10,B=20;
			A = A + B ;
			B = A - B ;
			A = A - B ;
		}

		::::::::::::::::::::::::::::::::::::::::::::::
	缺點:當AB做加減運算時,會有溢位的問題發生!!!
 
   (2)利用互斥或(Exclusive-OR)運算來達到資料交換的目的,方式:
		範例3:
		::::::::::::::::::::::::::::::::::::::::::::::
		//交換AB
		void main()
		{
			int A=10,B=20;
			A = A ^ B;
			B = B ^ A;
			A = A ^ B;
		}

		::::::::::::::::::::::::::::::::::::::::::::::
	注意:A^=B^=A^=B;這種寫法,除法清楚的瞭解編譯器的處理或次序,否則較不適合
	改寫:以下交換的程式可以利用循序運算子(,)做改寫:A^=B, B^=A, A^=B;
	巨集:可寫成巨集的方式:#define swap(x,y) (x^=y,y^=x,x^=y)
Written By Jame On 2003/09/01
Hosted by www.Geocities.ws

1