<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之旅 廣告
                【36.1 括號的強制功能。】 C語言中的括號有強制的功能,比如本節內容的強制改變優先級,以及以后將要講到的數據變量類型的強制轉換,指針類型的強制轉換,都是要用到括號。括號就是強制,強制就是括號。 【36.2 括號強制改變運算優先級。】 C語言的“加、減、乘、除、與、或、取反、左移、右移”等運算符是有嚴格優先級順序的,但是我本人記憶力有限,做項目哪能記住這么多優先級的前后順序,只是大概明白乘除的優先級比加減的優先級高,其它方面真的記不住那么多,怎么辦?為了確保萬一,我用到了“括號強制改變優先級”的功能,只要用了括號,就可以不按C語言默認的優先級順序來出牌,可以人為的改變運算優先級,達到“隨心所欲而不逾矩”的美妙境界。 括號的用法跟我們日常的數據運算公式的用法一致,先運行括號里面的運算,再執行其它運算。比如: a=a<<2+5; 這行代碼到底是先把變量a左移2位后再加5,還是先2加5等于7再讓變量a左移7位?對于像我這樣不能熟記C語言運算優先級順序的人,這條語句很容易讓我搞混。但是加上括號就明了,添加括號后如下: a=(a<<2)+5; a=a<<(2+5); 不用多說,加上括號后,上述兩行代碼傳遞了清晰的優先級順序。同理,再看一個例子: c=1+3\*c; 到底是1加3的結果再乘以變量c,還是3乘以變量c的結果再加1?因為我記得乘除法的優先級比加減法的優先級高,所以答案是3乘以變量c的結果再加1。但是對于初學者,為了避免出錯,加上括號就顯得更加清晰了,添加括號后如下: c=(1+3)\*c; c=1+(3\*c); 加括號后,優先級順序一目了然。 【36.3 括號會不會帶來額外的內存開銷?】 有人會問,括號雖好,但是添加括號會不會帶來額外的內存開銷?答案是:不會。比如: c=1+3\*c; //運算順序:默認先乘,再加。 c=1+(3\*c); //運算順序:強制先乘,再加。實現同樣的功能,這里的括號也可以省略。 上面兩行代碼,它們的運算順序一樣的,第二行代碼雖然添加了括號,但是不會帶來額外的內存開銷,這兩行代碼所占的內存大小是一樣的。 括號不是雞肋,括號應該是保健品,食之有味,又完全無副作用。用了括號可以使程序更加具有可讀性,也可以讓自己避開優先級順序的大坑。 【36.4 例程練習和分析。】 現在編寫一個程序來驗證剛才講到的主要內容: 程序代碼如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void main() //主函數 { unsigned char a=0x01; unsigned char b=0x01; unsigned char c=0x02; unsigned char d=0x02; a=(a<<2)+5; //a左移2位后變成4,再加5等于9 b=b<<(2+5); //2加5等于7,b再左移動7位等于128 c=(1+3)\*c; //1加3等于4,再乘以變量c等于8 d=1+(3\*d); //3乘以d等于6,再加1等于7 View(a); //把第1個數a發送到電腦端的串口助手軟件上觀察。 View(b); //把第2個數b發送到電腦端的串口助手軟件上觀察。 View(c); //把第3個數c發送到電腦端的串口助手軟件上觀察。 View(d); //把第4個數d發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:9 十六進制:9 二進制:1001 第2個數 十進制:128 十六進制:80 二進制:10000000 第3個數 十進制:8 十六進制:8 二進制:1000 第4個數 十進制:7 十六進制:7 二進制:111 分析: 通過實驗結果,發現在單片機上的實驗結果和我們的分析是一致的。 【36.5 如何在單片機上練習本章節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>

                              哎呀哎呀视频在线观看