教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

輕松學(xué)習(xí)C語(yǔ)言系列-交換兩個(gè)變量值的多種方式

更新時(shí)間:2016年03月29日17時(shí)06分 來(lái)源:傳智播客 瀏覽次數(shù):

  提到交換兩個(gè)變量的值,一般對(duì)編程有所了解的人最先想到的就是借助于一個(gè)中間變量。

  假設(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值的交換,思考一下,上面這種方法有什么缺陷嗎?

  對(duì),有缺陷!!!

  為什么呢?

  因?yàn)閕nt數(shù)據(jù)所有存放的數(shù)據(jù)范圍是有限的,如果a+b的值大于int類(lèi)型的數(shù)據(jù)范圍,那么就會(huì)出現(xiàn)數(shù)據(jù)溢出的情況。

  那么還有沒(méi)有其他方法來(lái)交換變量a,b的值呢?

  你又猜對(duì)了,有!!!請(qǐng)看如下代碼:

  a = a^b;

  b = a^b;

  a = a^b;

  第三種方式,可以正確交換變量a,b的值,既不用借助于中間變量,又不會(huì)發(fā)生數(shù)據(jù)溢出的情況,所以小伙伴們,你們明白了嗎?

0 分享到:
和我們?cè)诰€(xiàn)交談!