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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                【27.1 什么叫整除?】 最小的細分單位是“1”的除法運算就是整除,“1”不能再往下細分成小數點的除法運算就是整除。比如: 10除以4,商等于2.5。------(帶小數點,這個不是整除) 10除以4,商等于2,余數是2。------(這才是整除) 什么時候帶小數點,什么時候是整除?取決于參與運算的變量類型。標準的C語言中,其實遠遠不止我前面所說的unsigned char ,unsigned int ,unsigned long這三種類型,比如還有一種叫浮點數類型的float,當參與運算的變量存在float類型時,就可能存在小數點。關于小數點的問題以后再講,現在暫時不深入講解,現在要知道的是,unsigned char ,unsigned int ,unsigned long這三種變量類型的除法都是屬于整除運算,不帶小數點的。 【27.2 整除的運算符號是什么樣子的?】 10除以4,商等于2,余數是2,這個整除的過程誕生了兩個結果,一個是商,一個是余數,與此對應,整除就誕生出兩個運算符號,你如果想計算結果返回商就用“整除求商”的符號“/”,你如果想計算結果返回余數就用“整除求余”的符號“%”。咋一看,整除運算中用到的兩個符號“/”和“%”都不是我們日常生活中熟悉的除號“÷”,我個人猜測是因為“÷”這個符號在電腦鍵盤上不方便直接輸入,因此C語言的語法規則選用“/”和“%”作為整除的運算符號。 【27.3 整除求商“/”。】 整除求商的通用格式: “保存變量”=“被除數” / “除數1” / “除數2”... / “除數N”; 跟之前講的加減運算一樣,賦值符號“=”左邊的“保存變量”必須是變量,右邊的可以是變量和常量的任意組合。如果右邊只有兩個參與運算的數據,就是整除求商的常見格式。 整除求商的常見格式: “保存變量”=“被除數” / “除數” ; 現在深入分析一下整除求商的運算規律。 (1)當除數等于0時。 我們都知道,數學運算的除數是不允許等于0的,如果在51單片機中非要讓除數為0,商會出現什么結果?我測試了一下,發現有一個規律:在unsigned char的變量類型下,如果“除數”是變量的0,商等于十進制的255(十六進制是0xff)。如果“除數”是常量的0,商等于十進制的1。比如: unsigned char a; unsigned char b; unsigned char y=0; a=23/y; //除數變量y里面是0,那么a的結果是255(十六進制的0xff)。 b=23/0; //除數是常量0,那么b的結果是1。 平時做項目要盡量避免“除數是0”的情況,離它越遠越好,但是既然除數不能為0,為什么我非要做“除數為0”時的實驗呢?意義何在?這個實驗的意義是,雖然我知道除數為0時會出錯,但是我不知道這 個錯到底嚴不嚴重,會不會導致整個程序崩潰,當我做了這個實驗后,我心中的石頭才放下了,萬一除數為0時,最多只是運算出錯,但是不至于整個程序會崩潰,這樣我心里就有了一個底,當哪天我某個程序崩潰跑飛時,我至少可以排除了“除數為0”這種情況,引導我從其它方面去找bug。 (2)當被除數小于除數時。商等于0。比如: unsigned char c; c=7/10; //c的結果是0。 (3)當被除數等于除數時。商等于1。比如: unsigned char d; d=10/10; //d的結果是1。 (4)當被除數大于除數時。商大于0。比如: unsigned char e; unsigned char f; e=10/4; //e的結果是2,大于0。 f=10/3; //f的結果是3,大于0。 【27.4 整除求商的自除簡寫。】 當被除數是“保存變量”時,存在自除求商的簡寫。 “保存變量”=“保存變量” / “除數” ; 上述自除求商的簡寫如下: “保存變量” / =“除數” ; 比如: unsigned char g; g/=5; //相當于g=g/5; 【27.5 整除求商有沒有“自除1”的特殊寫法?】 加減法有自加1“++g”和自減1“g--”的特殊寫法,但是求商的除法不存在這種自除1的特殊寫法,因為一個數除以1的商還是等于它本身,所以求商的自除1沒有任何意義,因此C語言語法中沒有這種特殊寫法。 【27.6 整除求商的溢出。】 除法的溢出規律跟加法的溢出規律是一樣的,所以不再多舉例子。在實際項目中,為了避免一不小心就溢出的問題,我建議,不管加減乘除,凡是參與運算的變量全部都應該轉化成unsigned long變量,轉化的方法已經在前面章節講過,不再重復講解這方面的內容。 【27.7 例程練習和分析。】 現在編寫一個程序來驗證剛才講到的整除求商: 程序代碼如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void main() //主函數 { unsigned char a; unsigned char b; unsigned char c; unsigned char d; unsigned char e; unsigned char f; unsigned char g=10; //初始化為10 unsigned char y=0; //除數變量初始化為0。 //(1)當除數等于0時。 a=23/y; b=23/0; //這行代碼在編譯時會引起一條警告“Warning”,暫時不用管它。 //(2)當被除數小于除數時。 c=7/10; //(3)當被除數等于除數時。 d=10/10; //(4)當被除數大于除數時。 e=10/4; f=10/3; //(5)整除求商的簡寫。 g/=5; //相當于g=g/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發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:255 十六進制:FF 二進制:11111111 第2個數 十進制:1 十六進制:1 二進制:1 第3個數 十進制:0 十六進制:0 二進制:0 第4個數 十進制:1 十六進制:1 二進制:1 第5個數 十進制:2 十六進制:2 二進制:10 第6個數 十進制:3 十六進制:3 二進制:11 第7個數 十進制:2 十六進制:2 二進制:10 分析: 通過實驗結果,發現在單片機上的計算結果和我們的分析是一致的。 【27.8 如何在單片機上練習本章節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>

                              哎呀哎呀视频在线观看