更新時(shí)間:2016年03月29日17時(shí)06分 來源:傳智播客 瀏覽次數(shù):
假設(shè)現(xiàn)在有兩個(gè)變量
int a = 3;int b = 4;
那么借助中間變量的交換代碼如下:
int tmp = a; // tmp = 3
a = b; // a = 4
b = tmp; // b = 3
如果不借助中間變量,怎么去交換兩個(gè)變量的值呢?
這里先給大家介紹一種方式,代碼如下:
a = a + b; //a = 7
b = a - b; //b = 3
a = a - b; //a = 4
這種方法也實(shí)現(xiàn)了變量a,b值的交換,思考一下,上面這種方法有什么缺陷嗎?
對,有缺陷!!!
為什么呢?
因?yàn)閕nt數(shù)據(jù)所有存放的數(shù)據(jù)范圍是有限的,如果a+b的值大于int類型的數(shù)據(jù)范圍,那么就會出現(xiàn)數(shù)據(jù)溢出的情況。
那么還有沒有其他方法來交換變量a,b的值呢?
你又猜對了,有!!!請看如下代碼:
a = a^b;
b = a^b;
a = a^b;
第三種方式,可以正確交換變量a,b的值,既不用借助于中間變量,又不會發(fā)生數(shù)據(jù)溢出的情況,所以小伙伴們,你們明白了嗎?
北京校區(qū)