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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 類型轉換問題 ### 類型轉換問題 - 類型轉換分為:隱式數據類型轉換和顯示數據類型轉換 - 自動轉換(隱式轉換): - 自動轉換發生在不同數據類型的量混合運算時,由編譯系統自動完成。 - 自動轉換遵循以下規則 + **相同數據類型的值才能進行運算(比如加法運算),而且運算結果依然是同一種數據類型。系統會自動對占用內存較少的類型做一個“自動類型提升”的操作** + 若參與運算量的類型不同,則先轉換成同一類型,然后進行運算 + 轉換按數據長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉 成long型后再進行運算 + 所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉換成 double 型,再作運算 + char型和short型參與運算時,必須先轉換成int型 + 在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。如果右邊量的數據類型長度比左邊長時,將丟失一部分數據,這樣會降低精度,丟失的部分按四舍五入向前舍入 ``` double ↑ long ↑ unsigned ↑ int ↑ char|short ``` 例如: ``` int i = 1; i = i + 8.808 printf("%d", i); // 輸出結果: 9 ``` > 按照隱式處理方式,在處理`i = i + 8.808`時 > 首先i轉換為double型,然后進行相加,結果為double 型,再將double型轉換為整型賦給i - 強制類型轉換(顯示轉換) - 強制類型轉換是通過類型轉換運算來實現的 + 其一般形式為:(類型說明符) (表達式) ``` (float) a; /* 把a轉換為實型 */ (int)(x+y); /* 把x+y的結果轉換為整型 */ ``` ``` int i = 1; i = i + (int)8.808 printf("%d", i); // 輸出結果: 9 ``` > 這時直接將8.808轉換成整型,然后與i相加,再把結果賦給i。 > 其實: 這樣可把二次轉換簡化為一次轉換。 ``` int i = 1; i = (int)(i + 8.808) printf("%d", i); // 或者讓系統隱式轉換 int i = 1; i = i + 8.808 printf("%d", i); ``` - 強制類型轉換注意點 + 將大范圍的數據賦值給小范圍變量時,系統會自動做一個強制類型轉換的操作,這樣容易丟失精度 + 類型說明符和表達式都必須加括號(單個變量可以不加括號),如把(int)(x+y)寫成(int)x+y 則成了把x轉換成int型之后再與y相加了 + 無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變量的數據長度進行的臨時性 轉換,而不改變數據說明時對該變量定義的類型 ``` float floatValue = 10.1f; int sum = 4 + (int)floatValue ; printf("sum = %d", sum);// 輸出14 // floatValue本身的值并沒有改變 printf("floatValue = %f", floatValue); // 輸出10.100000 ```
                  <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>

                              哎呀哎呀视频在线观看