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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                在C語言中,進行類型之間的轉換有兩種轉換方式:隱式類型轉換 和 強制類型轉換。其中強制類型轉換是由開發人員完成的,比如float val = (float)u8; 一般不會出現問題,所以我們重點關心隱式類型轉換。 ### 隱式類型轉換是由編譯器主動完成的,如果由低類型到高類型的隱式類型轉換是安全的,不會發生截斷;相反由高類型到低類型的隱式類型轉換是不安全的,會發生截斷產生不正確的結果: ![](https://img.kancloud.cn/53/94/5394a672931b734b37a6596512e2ad80_832x246.png =600x) ### 四種情況下會發生隱式類型轉換:賦值,算術運算,函數傳參,函數返回值。 在源碼文件:main\_3.c中,我們列出了四種情況的例子: ![](https://img.kancloud.cn/a8/44/a844593f4bb181452bf2ee4d8d8ea556_734x1026.png =600x) ### **1.賦值** 圖中我們定義的類型uint8\_t u8,并賦值為250;同時定義int8\_t i8,然后把u8賦值給i8,顯然這個過程出現類型不匹配的轉換,由于250已經超過i8的最大范圍,因此i8不在是數值250了。 ### **2.算術運算** 兩個uint8\_t類型相加,賦值給uint16\_t,實際上編譯器在執行該條指令時,會把兩個uint8\_t先轉換為uint16\_t,所以圖中: ``` uint16_t both = cal_1 + cal_2; 等價于: uint16_t both = (uint16_t)cal_1 + (uint16_t)cal_2; ``` 隱式類型轉換后數據正確。 ### **3.函數傳參** 函數add的參數類型都是int8\_t,而我們傳入的200已經超過最大范圍,因此傳入的數據發生大類型到小類型的轉換;同時函數返回值是int8\_t,兩個超過范圍的int8\_t相加得不到200+200=400的數值,如果相加也出現溢出,那么返回值更加不可測了。 ### **4.函數返回值** 函數add2的參數和返回值都是uint16\_t,我們傳入的兩個uint8\_t被轉換為uint16\_t,運算結果數值也是uint16\_t,因此返回數值正確。 編譯運行: ![](https://img.kancloud.cn/5c/d8/5cd868d1ec36f10a7b70395ad0f66850_832x222.png =600x) ### 在編寫程序的過程中,我們需要留意可能存在隱式類型轉換的地方,避免由于數據類型轉換導致的結果不可預測。
                  <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>

                              哎呀哎呀视频在线观看