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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                【28.1 整除求余“%”。】 上一節講到,求商求余都是屬于整除運算,區別是:求商返回商,求余返回余,求商是“/”,求余是“%”。求余的運算符號恰好就是我們平時常用的百分號“%”,之所以選擇百分號作為求余的運算符號,我猜測是因為,在小于100%的數據中,如果我們仔細回味一下百分號的分子與分母的關系,其實就隱含了一層淡淡的求余的味道。 整除求余的通用格式: “保存變量”=“被除數”% “除數1” % “除數2”...% “除數N”; 跟之前講的加減運算一樣,賦值符號“=”左邊的“保存變量”必須是變量,右邊的可以是變量和常量的任意組合。如果右邊只有兩個參與運算的數據,就是整除求余的常見格式。 整除求余的常見格式: “保存變量”=“被除數” % “除數” ; 現在深入分析一下整除求余的運算規律。 (1) 當除數等于0時。 我們都知道,數學運算除數是不允許等于0的,如果在單片機中非要讓除數為0,余數會出現什么結果?我在Keil的C51編譯環境試過,發現有一個規律:如果除數是變量的0,那么余數等于被除數。如果除數是常量的0,那么余數等于1。還有一種特殊的情況是編譯不通過的,這種情況是“當被除數是變量,而除數是常量的0”。比如: unsigned char a; unsigned char b; unsigned char k=10; unsigned char y=0; //除數初始化為0 a=23%y; //除數變量y里面是0,a的結果等于被除數23。 b=23%0; //除數是常量0,b的結果是1。 b=k%0; //這種特殊情況編譯不通過:被除數是變量,而除數是常量的0。 平時做項目要盡量避免“除數是0”的情況,離它越遠越好,但是既然除數不能為0,為什么我非要做“除數為0”時的實驗呢?意義何在?這個實驗的意義是,雖然我知道除數為0時會出錯,但是我不知道這 個錯到底嚴不嚴重,會不會導致整個程序崩潰,當我做了這個實驗后,我心中的石頭才放下了,萬一除數為0時,最多只是運算出錯,但是不至于整個程序會崩潰,這樣我心里就有了一個底,當哪天我某個程序崩潰跑飛時,我至少可以排除了“除數為0”這種情況,引導我從其它方面去找bug。 (2)當被除數小于除數時。余數等于被除數本身。比如: unsigned char c; c=7%10; //c的結果是7。 (3)當被除數等于除數時。余數等于0。比如: unsigned char d; d=10%10; //d的結果是0。 (4)當被除數大于除數時。余數必然小于除數。比如: unsigned char e; unsigned char f; e=10%4; //e的結果是2。 f=10%3; //f的結果是1。 (5)當除數等于1時。余數必然等于0。 unsigned char g; g=7%1; //g的結果是0。 【28.2 整除求余的自除簡寫。】 當被除數是“保存變量”時,存在自除求余的簡寫。 “保存變量”=“保存變量” % “除數” ; 上述自除求余的簡寫如下: “保存變量” % =“除數” ; 比如: unsigned char h=9; h%=5; //相當于h=h%5; 最后余數的計算結果是4。 【28.3 整除求余有沒有“自除1”的特殊寫法?】 加減法有自加1“++g”和自減1“g--”的特殊寫法,但是求余的除法不存在這種自除1的特殊寫法,因為任何一個數除以1的余數必然等于0,所以求余的自除1沒有任何意義,因此C語言語法中沒有這種特殊寫法。 【28.4 整除求余的溢出。】 不管是求商還是求余,除法的溢出規律跟加法的溢出規律是一樣的,所以不再多舉例子。在實際項目中,為了避免一不小心就溢出的問題,我建議,不管加減乘除,凡是參與運算的變量全部都應該轉化成unsigned long變量,轉化的方法已經在前面章節講過,不再重復講解這方面的內容。 【28.5 例程練習和分析。】 現在編寫一個程序來驗證剛才講到的整除求余: 程序代碼如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void main() //主函數 { unsigned char a; unsigned char b; unsigned char c; unsigned char d; unsigned char e; unsigned char f; unsigned char g; unsigned char h=9; //初始化為9。 unsigned char k=10; //初始化為10。 unsigned char y=0; //除數變量初始化為0。 //(1)當除數等于0時。 a=23%y; b=23%0; // b=k%0; //這種特殊情況編譯不通過:“被除數”是變量,而“除數”是常量的0。 //(2)當被除數小于除數時。 c=7%10; //(3)當被除數等于除數時。 d=10%10; //(4)當被除數大于除數時。 e=10%4; f=10%3; //(5)當除數等于1時。 g=7%1; //(6)自除求余的簡寫。 h%=5; //相當于h=h%5; View(a); //把第1個數a發送到電腦端的串口助手軟件上觀察。 View(b); //把第2個數b發送到電腦端的串口助手軟件上觀察。 View(c); //把第3個數c發送到電腦端的串口助手軟件上觀察。 View(d); //把第4個數d發送到電腦端的串口助手軟件上觀察。 View(e); //把第5個數e發送到電腦端的串口助手軟件上觀察。 View(f); //把第6個數f發送到電腦端的串口助手軟件上觀察。 View(g); //把第7個數g發送到電腦端的串口助手軟件上觀察。 View(h); //把第8個數h發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:23 十六進制:17 二進制:10111 第2個數 十進制:1 十六進制:1 二進制:1 第3個數 十進制:7 十六進制:7 二進制:111 第4個數 十進制:0 十六進制:0 二進制:0 第5個數 十進制:2 十六進制:2 二進制:10 第6個數 十進制:1 十六進制:1 二進制:1 第7個數 十進制:0 十六進制:0 二進制:0 第8個數 十進制:4 十六進制:4 二進制:100 分析: 通過實驗結果,發現在單片機上的計算結果和我們的分析是一致的。 【28.6 如何在單片機上練習本章節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>

                              哎呀哎呀视频在线观看