C語(yǔ)言實(shí)現(xiàn)兩個(gè)變量值交換的三種方式
1.使用臨時(shí)變量(推薦)
這是日常使用最多的一種方式,只需要額外申請(qǐng)一個(gè)臨時(shí)變量,簡(jiǎn)單實(shí)用
#include<stdio.h> int main() { int a = 5; int b = 3; printf("交換前 %d %d\n", a, b); int c = a; //a的值放到臨時(shí)變量中 a = b; //b的值放到a中 b = c; //臨時(shí)變量中存放的a的值放到b中 printf("交換后 %d %d\n", a, b); return 0; }
2.相加和相減的方式(值較大時(shí)可能丟失數(shù)據(jù))
使用這種方式的環(huán)境,就是在條件不允許創(chuàng)建額外的臨時(shí)變量時(shí)(比如題目要求,面試官要求)
但是這種情況雖然能達(dá)到交換的效果,但是在兩個(gè)變量較大時(shí)(接近整型變量的上限),求和之后就會(huì)丟失一部分的數(shù)據(jù),導(dǎo)致結(jié)果出錯(cuò)
#include<stdio.h> int main() { int a = 5; int b = 3; printf("交換前 %d %d\n", a, b); a = a + b; b = a - b; a = a - b; printf("交換后 %d %d\n", a, b); return 0; }
3.按位異或運(yùn)算
這種方式巧妙得運(yùn)用了按位異或的計(jì)算特點(diǎn)——對(duì)任何兩個(gè)值進(jìn)行按位異或運(yùn)算之后,再拿結(jié)果與原來(lái)的一個(gè)值進(jìn)行按位異或,都會(huì)得到另外一個(gè)原來(lái)的值
這種方式解決了上一種方式存在的丟失數(shù)據(jù)問(wèn)題,且不需要額外的臨時(shí)變量,缺點(diǎn)是可讀性較差
#include<stdio.h> int main() { int a = 5; int b = 3; printf("交換前 %d %d\n", a, b); a = a ^ b; b = a ^ b; a = a ^ b; printf("交換后 %d %d\n", a, b); return 0; }
到此這篇關(guān)于C語(yǔ)言實(shí)現(xiàn)兩個(gè)變量值交換的三種方式的文章就介紹到這了,更多相關(guān)C語(yǔ)言兩個(gè)變量值交換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言單鏈隊(duì)列的表示與實(shí)現(xiàn)實(shí)例詳解
這篇文章主要介紹了C語(yǔ)言單鏈隊(duì)列的表示與實(shí)現(xiàn),對(duì)于研究數(shù)據(jù)結(jié)構(gòu)與算法的朋友來(lái)說(shuō)很有參考借鑒價(jià)值,需要的朋友可以參考下2014-07-07VSCode插件開發(fā)全攻略之跳轉(zhuǎn)到定義、自動(dòng)補(bǔ)全、懸停提示功能
這篇文章主要介紹了VSCode插件開發(fā)全攻略之跳轉(zhuǎn)到定義、自動(dòng)補(bǔ)全、懸停提示,需要的朋友可以參考下2020-05-05實(shí)例講解C++設(shè)計(jì)模式編程中State狀態(tài)模式的運(yùn)用場(chǎng)景
這篇文章主要介紹了實(shí)例講解C++設(shè)計(jì)模式編程中State狀態(tài)模式的運(yùn)用場(chǎng)景,文章最后的適用性部分則介紹了一些State模式善于處理的情況,需要的朋友可以參考下2016-03-03C++ 面向?qū)ο蟪绦蛟O(shè)計(jì)--內(nèi)存分區(qū)詳解
這篇文章主要介紹了剖析C++的面向?qū)ο缶幊趟枷?C++的面向?qū)ο筇匦允瞧鋵?duì)C語(yǔ)言的重要拓展之處,需要的朋友可以參考下,希望能夠給你帶來(lái)幫助2021-08-08C語(yǔ)言中isdigit()函數(shù)和isxdigit()函數(shù)的用法
這篇文章主要介紹了C語(yǔ)言中isdigit()函數(shù)和isxdigit()函數(shù)的用法,用來(lái)判斷字符師傅為阿拉伯?dāng)?shù)字和16進(jìn)制數(shù)字,需要的朋友可以參考下2015-08-08C語(yǔ)言使用廣度優(yōu)先搜索算法解決迷宮問(wèn)題(隊(duì)列)
這篇文章主要介紹了C語(yǔ)言使用廣度優(yōu)先搜索算法解決迷宮問(wèn)題,結(jié)合迷宮問(wèn)題分析了C語(yǔ)言隊(duì)列廣度優(yōu)先搜索算法的相關(guān)使用技巧,需要的朋友可以參考下2017-09-09C++ Coroutine簡(jiǎn)單學(xué)習(xí)教程
這篇文章主要為大家詳細(xì)介紹了C++ Coroutine的簡(jiǎn)單學(xué)習(xí)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08