<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                【56.1 return深入講解。】 return在英語單詞中有“返回”的意思,上一節提到,凡是“有輸出”的函數,函數內部必須有一個“return+變量或者常量”與之配套,表示返回的結果給外部調用者接收,這個知識點很容易理解,但是容易被忽略的是另外四個功能: 第一個是return語句隱含了立即退出的功能。退出哪?退出當前函數。只要執行到return語句,就馬上退出當前函數。即使return語句身陷多層while或者for的循環中,它也毫不猶豫立即退出當前函數。 第二個是return語句可以出現在函數內的任何位置。可以出現在第一行代碼,也可以出現在中間的某行代碼,也可以出現在最后一行的代碼,它的位置不受限制。很多初學者有個錯覺,以為return只能出現在最后一行,這是錯的。 第三個是return語句不僅僅可以用在“有輸出”的函數,也可以用在“無輸出”的函數,也就是可以用在前綴是void的函數里。回顧上一節,在“有輸出”的函數里,return后面緊跟一個變量或者常量,表示返回的數,但是在“無輸出”的函數里,因為是“無輸出”,此時return后面不用跟任何變量或者常量,這種寫法也是合法的,表示返回的是空的。此時return主要起到立即退出當前函數的作用。 第四個是return語句可以在一個函數里出現N多次,次數不受限制,不一定必須只能一次。不管一個函數內有多少個return語句,只要任何一個return語句被單片機執行到,就立即退出當前函數。 【56.2 中途立即退出的功能。】 下面的書寫格式是合法的: void HanShu(void) //“無輸出”函數的定義。 { 語句1; return; //立即退出當前函數。對于這類“無輸出”函數,return后面沒有跟任何變量或者常量。 語句2; return; //立即退出當前函數。對于這類“無輸出”函數,return后面沒有跟任何變量或者常量。 語句3; return; //立即退出當前函數。對于這類“無輸出”函數,return后面沒有跟任何變量或者常量。 } 分析:當HanShu此函數被調用時,單片機從“語句1”往下執行,當遇到第一個return語句后,馬上退出當前函數。后面的“語句2”和“語句3”等代碼永遠不會被執行到。多說一句,大家仔細看看return后面跟了什么數沒有?什么都沒有。因為此函數的前綴是void的,是“無輸出”的。 【56.3 身陷多層while或者for的循環時的驚人表現。】 下面的書寫格式是合法的: void HanShu(void) //“無輸出”函數的定義。 { 語句1; while(1) //第一個循環 { while(1) //第二個循環中的循環 { return; //立即退出當前函數。 } 語句2; return; //立即退出當前函數。 } 語句3; return; //立即退出當前函數。 } 分析:當HanShu此函數被調用時,單片機從“語句1”往下執行,先進入第一個循環,接著進入第二個循環中的循環,然后遇到第一個return語句,于是馬上退出當前函數。后面的“語句2”和“語句3”等代碼永遠不會被執行到。此函數中,雖然表面看起來有那么多可怕的循環約束著,但是一旦碰上return語句都是浮云,立刻退出當前函數。 【56.4 在“有輸出”函數里的書寫格式。】 把上面例子中“無輸出”改成“有輸出”的函數后: unsigned char HanShu(void) //“有輸出”函數的定義。 { unsigned char a=9; 語句1; while(1) //第一個循環 { while(1) //第二個循環中的循環 { return a; //返回a變量的值,并且立即退出當前函數。 } 語句2; return a; //返回a變量的值,并且立即退出當前函數。 } 語句3; return a; //返回a變量的值,并且立即退出當前函數。 } 分析:因為此函數是“有輸出”的函數,所以return語句后面必須配套一個變量或者常量,此例子中配套的是a變量。當HanShu函數被調用時,單片機從“語句1”往下執行,先進入第一個循環,接著進入第二個循環中的循環,然后遇到第一個“return a”語句,馬上退出當前函數。而后面的“語句2”和“語句3”等代碼是永遠不會被執行到的。再一次說明了,return語句不僅有返回某數的功能,還有立即退出的重要功能。 【56.5 項目中往往是跟if語句搭配使用。】 前面的例子只是為了解釋return語句的執行順序和功能,實際項目中,如果中間有多個return語句,中間的return語句不可能像前面的例子那樣單獨使用,它往往是跟if語句一起搭配使用,否則單獨用return就沒有什么意義。比如: void HanShu(void) //“無輸出”函數的定義。 { 語句1; if(某條件滿足) { return; //立即退出當前函數。 } 語句2; if(某條件滿足) { return; //立即退出當前函數。 } 語句3; } 分析:單片機從“語句1”開始往下執行,至于在哪個“return”語句處退出當前函數,就要看哪個if的條件滿不滿足了,如果所有的if的條件都不滿足,此函數會一直執行完最后的“語句3”才退出當前函數。 【56.6 例程練習和分析。】 寫一個簡單的除法函數,在除法運算中,除數不能為0,如果發現除數為0,就立即退出當前函數,并且返回運算結果默認為0。 /\*---C語言學習區域的開始。-----------------------------------------------\*/ //函數的聲明。 unsigned int ChuFa(unsigned int BeiChuShu,unsigned int ChuShu); //變量的定義。 unsigned int a;//此變量用來接收除法的運算結果。 unsigned int b;//此變量用來接收除法的運算結果。 //函數的定義。 unsigned int ChuFa(unsigned int BeiChuShu,unsigned int ChuShu) { unsigned int Shang; //返回的除法運算結果:商。 if(0==ChuShu) //如果除數等于0,就立即退出當前函數,并返回0 { return 0; // 退出當前函數并且返回0.此時后面的代碼不會被執行。 } Shang=BeiChuShu/ChuShu; //除法運算的算法 return Shang; //返回最后的運算結果:商。并且退出當前函數。 } void main() //主函數 { a=ChuFa(128,0); //函數調用。128除以0,把商返回給a變量。 b=ChuFa(128,2); //函數調用。128除以2,把商返回給b變量。 View(a); //把a發送到電腦端的串口助手軟件上觀察。 View(b); //把b發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:0 十六進制:0 二進制:0 第2個數 十進制:64 十六進制:40 二進制:1000000 分析: 變量a為0。 變量b為64。 【56.7 如何在單片機上練習本章節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>

                              哎呀哎呀视频在线观看