在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 第12節(jié):兩個(gè)變量的數(shù)據(jù)交換。

            第12節(jié):兩個(gè)變量的數(shù)據(jù)交換。

            作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò) 收藏
            從業(yè)十年,教你單片機(jī)入門 第12講:

            為了加深理解賦值語(yǔ)句的一個(gè)重要特性“覆蓋性”,本節(jié)利用賦值語(yǔ)句“=”做一個(gè)實(shí)驗(yàn)。要求把變量a與b的兩個(gè)數(shù)據(jù)進(jìn)行交換,假設(shè)a原來(lái)的數(shù)據(jù)是1,b原來(lái)的數(shù)據(jù)是5,交換數(shù)據(jù)后,a的數(shù)據(jù)應(yīng)該變?yōu)?,b的數(shù)據(jù)應(yīng)該變?yōu)?。

            本文引用地址:http://www.biyoush.com/article/201611/319822.htm

            很多初學(xué)者剛看到這么簡(jiǎn)單的題目,會(huì)想當(dāng)然的根據(jù)我們?nèi)粘I畹乃悸?,你把你的東西給我,我把我的東西給你,就兩個(gè)步驟,so easy!請(qǐng)直接復(fù)制第十節(jié)的模板程序,僅修改main函數(shù)后,main函數(shù)源代碼如下:

            void main() //主程序

            {

            /*---C語(yǔ)言學(xué)習(xí)區(qū)域的開始---------------------------------------------------------------------------*/

            unsigned char a=1; //定義一個(gè)變量a,并且分配了一個(gè)字節(jié)的RAM空間,里面保存的數(shù)據(jù)被初始化成1.

            unsigned char b=5; //定義一個(gè)變量b,并且分配了一個(gè)字節(jié)的RAM空間,里面保存的數(shù)據(jù)被初始化成5.

            b=a; //第一步:為了交換,先把a(bǔ)的數(shù)賦值給b。

            a=b; //第二步:為了交換,再把b的數(shù)賦值給a。

            GuiWdData0=a; //把變量a這個(gè)數(shù)值放到窗口變量0里面顯示

            GuiWdData1=b; //把變量b這個(gè)數(shù)值放到窗口變量1里面顯示

            /*---C語(yǔ)言學(xué)習(xí)區(qū)域的結(jié)束---------------------------------------------------------------------------*/

            while(1)

            {

            initial();

            key_service();

            display_service();

            }

            }

            復(fù)制代碼

            上堅(jiān)鴻51學(xué)習(xí)板觀察程序執(zhí)行的結(jié)果:

            變量a的數(shù)值是1。

            變量b的數(shù)值是1。

            上述實(shí)驗(yàn)結(jié)果并沒(méi)有達(dá)到交換數(shù)據(jù)的目的,為什么?因?yàn)橘x值語(yǔ)句有一個(gè)重要的特性,就是覆蓋性。分析如下:

            b=a; //第一步

            分析點(diǎn)評(píng):執(zhí)行第一步后,此時(shí)雖然b得到了a的數(shù)據(jù)1,但是b原來(lái)自己的數(shù)據(jù)5已經(jīng)被覆蓋丟失了!

            a=b; //第二步

            分析點(diǎn)評(píng):由于b的數(shù)據(jù)在執(zhí)行第一步后變成了1,執(zhí)行第二步后,此時(shí)相當(dāng)于把1賦值給a,并沒(méi)有5!所以a和b的數(shù)據(jù)都是1,不能達(dá)到交換后“a為5,b為1”的目的。

            上述交換數(shù)據(jù)的程序宣告失敗!怎么辦?既然賦值語(yǔ)句具有覆蓋性,那么兩變量想交換數(shù)據(jù),就必須借助第三方寄存,此時(shí)只需要多定義一個(gè)第三方變量t。main函數(shù)源代碼如下:

            void main() //主程序

            {

            /*---C語(yǔ)言學(xué)習(xí)區(qū)域的開始---------------------------------------------------------------------------*/

            unsigned char a=1; //定義一個(gè)變量a,并且分配了一個(gè)字節(jié)的RAM空間,里面保存的數(shù)據(jù)被初始化成1.

            unsigned char b=5; //定義一個(gè)變量b,并且分配了一個(gè)字節(jié)的RAM空間,里面保存的數(shù)據(jù)被初始化成5.

            unsigned char t; //定義一個(gè)變量t,并且分配了一個(gè)字節(jié)的RAM空間,里面默認(rèn)是什么數(shù)據(jù)不重要。

            t=b; //第一步:為了避免b的數(shù)據(jù)在執(zhí)行第二步后被覆蓋丟失,先把b的數(shù)據(jù)寄存在第三方變量t那里。

            b=a; //第二步:把a(bǔ)的數(shù)賦值給b,b原來(lái)的數(shù)據(jù)雖然被覆蓋丟失,但是b在t變量那里有備份,再也不用擔(dān)心了。

            a=t; //第三步:由于此時(shí)b已經(jīng)獲得了a的數(shù)據(jù),如果想交換,此時(shí)只能把b在t變量里的備份賦值給a,而不能用b。

            GuiWdData0=a; //把變量a這個(gè)數(shù)值放到窗口變量0里面顯示

            GuiWdData1=b; //把變量b這個(gè)數(shù)值放到窗口變量1里面顯示

            /*---C語(yǔ)言學(xué)習(xí)區(qū)域的結(jié)束---------------------------------------------------------------------------*/

            while(1)

            {

            initial();

            key_service();

            display_service();

            }

            }

            上堅(jiān)鴻51學(xué)習(xí)板觀察程序執(zhí)行的結(jié)果:

            變量a的數(shù)值是5。

            變量b的數(shù)值是1。

            交換成功!

            下節(jié)預(yù)告:二進(jìn)制與字節(jié)單位。



            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉