<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                【13.1 什么是賦值語句的覆蓋性?】 a=b; 上述代碼,執行完這條賦值語句后,會把右邊變量b的數值復制一份給左邊變量a,a獲得了跟b一樣的數值,但是a原來自己的數值卻丟失了,為什么會丟失?就是因為被b復制過來的新數據給覆蓋了,這就是賦值語句的覆蓋性。 【13.2 例程的分析和練習。】 既然賦值語句有覆蓋性的特點,那么如何讓兩個變量相互交換數值?假設a原來的數據是1,b原來的數據是5,交換數據后,a的數據應該變為5,b的數據應該變為1,怎么做?很多初學者剛看到這么簡單的題目,會馬上根據日常生活的思路,你把你的東西給我,我把我的東西給你,就兩個步驟而已,看似很簡單,現在按這個思路編寫一段程序看看會出什么問題,代碼如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void main() //主函數 { unsigned char a=1; //定義的變量a被分配了1個字節的RAM空間,保存的數據被初始化成1。 unsigned char b=5; //定義的變量b被分配了1個字節的RAM空間,保存的數據被初始化成5。 b=a; //第一步:為了交換,先把a的數賦值給b。 a=b; //第二步:為了交換,再把b的數賦值給a。 View(a); //把第1個數a發送到電腦端的串口助手軟件上觀察。 View(b); //把第2個數b發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:1 十六進制:1 二進制:1 第2個數 十進制:1 十六進制:1 二進制:1 分析: 第1個數a和第2個數b居然都是1!這不是我們想要的結果。我們要的交換結果是:交換后,a變為5,b變為1。在哪個環節出了問題?把鏡頭切換到上述代碼的“第一步”和“第二步”,由于b的數據在執行完“第一步”后,b自己原來的數據5被覆蓋丟失了變成新的數據1,接著執行“第二步”后,此時相當于把 b的新數據1賦值給a,并沒有5!所以a和b的數據都是1,不能達到交換后“a為5,b為1”的目的。其實就是賦值語句的覆蓋性在作祟。 上述交換數據的程序宣告失敗!怎么辦?既然賦值語句具有覆蓋性,那么兩變量想交換數據,就必須借助第三方變量來寄存,此時只需要多定義一個第三方變量t。正確的代碼如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void main() //主函數 { unsigned char a=1; //定義的變量a被分配了1個字節的RAM空間,保存的數據被初始化成1。 unsigned char b=5; //定義的變量b被分配了1個字節的RAM空間,保存的數據被初始化成5。 unsigned char t; //定義一個第三方變量t,用來臨時寄存數值。 t=b; //第一步:為了避免b的數據在賦值后被覆蓋丟失,先寄存一份在第三方變量t那里。 b=a; //第二步:把a的數賦值給b,b原來的數據雖然丟失,但是b在t變量那里有備份。 a=t; //第三步:再把b在t變量里的備份賦值給a。注意,這里不能用b,因b原數據已被覆蓋。 View(a); //把第1個數a發送到電腦端的串口助手軟件上觀察。 View(b); //把第2個數b發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:5 十六進制:5 二進制:101 第2個數 十進制:1 十六進制:1 二進制:1 分析: 實驗結果顯示,兩變量的數值交換成功。 【13.3 如何在單片機上練習本章節C語言程序?】 直接復制前面章節中第十一節的模板程序,練習代碼時只需要更改“C語言學習區域”的代碼就可以了,其它部分的代碼不要動。編譯后,把程序下載進帶串口的51學習板,通過電腦端的串口助手軟件就可以觀察到不同的變量數值,詳細方法請看第十一節內容。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看