<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                【26.1 連乘。】 上一節的乘法例子中,右邊的乘數只有兩個。實際上,C語言規則沒有限制乘數的個數,它的通用格式如下: “保存變量”=“乘數1”\*“乘數2”...\*“乘數N”; 當右邊的乘數個數超過兩個的時候(這里暫時把平時所說的被乘數也歸類為乘數),這種情況就是“連乘”。每個乘數的屬性沒有限定,可以是常量,也可以是變量。比如: unsigned char x=3; //定義一個變量x,初始化默認為3. unsigned char y=6; //定義一個變量y,初始化默認為6. unsigned char k=2; //定義一個變量k,初始化默認為2. a=2\*5\*3; //乘數全部是常量。a的結果為30。 b=k\*x\*y; //乘全部是變量。b的結果為36。 c=x\*5\*y; //乘數,有的是常量,有的是變量。c的結果為90。 連乘的運行順序是,賦值符號“=”右邊的乘數挨個相乘,把每一次的運算結果放在一個臨時的隱蔽中間變量里,這個隱蔽的變量我們看不到,是單片機系統內部參與運算時的專用寄存器,等右邊所有乘數連乘的計算結果出來后,再把隱蔽變量所保存的計算結果賦值給左邊的“保存變量”。 【26.2 自乘與自乘簡寫。】 什么是自乘?當賦值符號“=”右邊的乘數只要其中有一個是“保存變量”本身時,這種情況就是“自乘”,常見格式如下: “保存變量”=“保存變量”\*“乘數1”; “保存變量”=“保存變量”\*(“乘數1”\*“乘數2”...\*“乘數N”); 上述自乘計算式可以簡寫成如下格式: “保存變量”\*=“乘數1”; “保存變量”\*=“乘數1”\*“乘數2”...\*“乘數N”; 這種格式就是“自乘簡寫”。現在舉幾個例子如下: unsigned char d=5; //定義一個變量d,初始化默認為5. unsigned char e=5; //定義一個變量e,初始化默認為5. unsigned char f=5; //定義一個變量f,初始化默認為5. unsigned char x=3; //定義一個變量x,初始化默認為3. unsigned char y=6; //定義一個變量y,初始化默認為6. unsigned char k=2; //定義一個變量k,初始化默認為2. d\*=6; //相當于d=d\*6;最后d的結果為30。 e\*=x; //相當于e=e\*x;最后e的結果為15。 f\*=2\*y\*k; //相當于f=f\*(2\*y\*k);最后f的結果為120。 【26.3 有沒有“自乘1”的特殊寫法?】 之前在講加法的自加和減法的自減運算時,還給大家介紹了它們另外一種特殊的簡寫方式。比如減法運算,當右邊只有2減數,當一個減數是“保存變量”,另一個是常數1時,格式如下: “保存變量”=“保存變量”-1; 這時候,可以把上述格式簡寫成如下兩種格式: “保存變量”--; \--“保存變量”; 這兩種格式也是俗稱的“自減1”操作。比如: g--; //相當于g=g-1或者g-=1; \--h; //相當于h=h-1或者h-=1; 那么,本節所講的自乘運算,有沒有“g\*\*”或者“\*\*h”這種特殊的“自乘1”寫法?答案很明顯,C語言里沒有“自乘1”這種特殊寫法。因為任何一個數“自乘1”還是等于它本身,所以在乘法運算中這種特殊寫法就沒有存在的意義。多說一句,如果某天有朋友在某個地方看到“\*\*h”這類語句,它的本意跟“自乘”沒關系,而是跟C語言的另一塊知識點“指針”有關。 【26.4 乘法的溢出。】 乘法的溢出規律跟加減法的溢出規律是一樣的。舉一個例子如下: unsigned char m=30; unsigned char n=10; unsigned char a; a=m\*n; 分析:m與n相乘,相當于30乘以10,運算結果是300(十六進制是0x012c)保存在一個隱藏中間變量,根據前面加減法運算的規律,我猜測這個隱藏中間變量可能是unsigned int類型,然后再把這個中間變量賦值給單字節變量a,a只能接收十六進制的低8位字節0x2c,所以運算后a的數值由于溢出變成了十六進制的0x2c(十進制是44)。由于乘法的溢出規律跟加減法的溢出規律是一樣的,所以不再多舉例子。在實際項目中,為了減少溢出的現象,我建議,不管加減乘除,凡是參與運算的變量全部都應該轉化成unsigned long變量,轉化的方法已經在前面章節講過,不再重復講解這方面的內容。 【26.5 例程練習和分析。】 現在編寫一個程序來驗證剛才講到的連乘和自乘簡寫: 程序代碼如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void main() //主函數 { unsigned char a; unsigned char b; unsigned char c; unsigned char d=5; //定義一個變量d,初始化默認為5. unsigned char e=5; //定義一個變量e,初始化默認為5. unsigned char f=5; //定義一個變量f,初始化默認為5. unsigned char x=3; //定義一個變量x,初始化默認為3. unsigned char y=6; //定義一個變量y,初始化默認為6. unsigned char k=2; //定義一個變量k,初始化默認為2. //第1個知識點:連乘。 a=2\*5\*3; //乘數全部是常量。a的結果為30。 b=k\*x\*y; //乘數全部是變量。b的結果為36。 c=x\*5\*y; //乘數,有的是常量,有的是變量。c的結果為90。 //第2個知識點:自乘的簡寫。 d\*=6; //相當于d=d\*6;最后d的結果為30。 e\*=x; //相當于e=e\*x;最后e的結果為15。 f\*=2\*y\*k; //相當于f=f\*(2\*y\*k);最后f的結果為120。 View(a); //把第1個數a發送到電腦端的串口助手軟件上觀察。 View(b); //把第2個數b發送到電腦端的串口助手軟件上觀察。 View(c); //把第3個數c發送到電腦端的串口助手軟件上觀察。 View(d); //把第4個數d發送到電腦端的串口助手軟件上觀察。 View(e); //把第5個數e發送到電腦端的串口助手軟件上觀察。 View(f); //把第6個數f發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:30 十六進制:1E 二進制:11110 第2個數 十進制:36 十六進制:24 二進制:100100 第3個數 十進制:90 十六進制:5A 二進制:1011010 第4個數 十進制:30 十六進制:1E 二進制:11110 第5個數 十進制:15 十六進制:F 二進制:1111 第6個數 十進制:120 十六進制:78 二進制:1111000 分析: 通過實驗結果,發現在單片機上的計算結果和我們的分析是一致的。 【26.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>

                              哎呀哎呀视频在线观看