C++交換兩個變量值的方法


簡單地列一下交換兩個變量值地幾種方法。

1、通過第三方實現,這一種也是最最最常見普通的方法:

void swap(int *a, int *b)
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

2、加減法,要注意數據溢出

void swap(int *a, int *b)
{
    (*a) += (*b);
    (*b) = (*a) - (*b);
    (*a) = (*a) - (*b);
}

3、位運算法,適用類型:short、int、long等整型,不適用float、double等浮點型。

void swap(long &a, long &b)
{
    a = a^b;
    b = a^b;
    a = a^b;
}

4、匯編方法,此方法不太適合用於子函數調用,並且不適合VS的x64,只能用於VS的win32項目(有解決方法的)

void swap(int &a, int &b)    
{
	_asm
	{
		push a;
		push b;
		pop a;
		pop b;
	};
}
void main(int argc, char *argv[]) 
{
	int a = 4.13;
	int b = 5.12;
	cout << a << "," << b << endl;
	swap(a, b);
	cout << a << "," << b << endl;
	_asm
	{
		push a;
		push b;
		pop a;
		pop b;
	};
	cout << a << "," << b << endl;
	system("pause");
}

還有很多稀奇古怪亂七八糟天花亂墜令人眼花繚亂贊不絕口罵不出聲的方法,這里就不敢繼續恭維了....所以,比較推薦第一種,也是最普通的那種方法,因為一個第三方變量對於現在大部分硬件來說,應該,這都不占內存了吧,所以總的來說,我常用第一種,然后偶爾用第二種,第三種和第四種甚至第五第六...感覺就是在無聊炫技(-_-!!!)...

東風知我欲山行,吹斷檐間積雨聲。 
嶺上晴雲披絮帽,樹頭初日掛銅鉦。 
野桃含笑竹籬短,溪柳自搖沙水清。 
西崦人家應最樂,煮芹燒筍餉春耕。 
身世悠悠我此行,溪邊委轡聽溪聲。 
散材畏見搜林斧,疲馬思聞卷旆鉦。 
細雨足時茶戶喜,亂山深處長官清。

-- 蘇軾 《新城道中二首其一》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM