什麼是型別轉換?


型別轉換是一種操作,它接收一種型別的資料物件,並建立多個型別的等效資料物件。型別轉換操作的簽名如下所示:

                   conversion_op :type1→type2

型別轉換主要分為以下兩種:

  • 隱式型別轉換 (強制轉換) − 支援混合模式表示式的程式語言應該描述隱式運算元型別轉換的約定。

強制轉換定義為型別之間的自動轉換。例如,在 Pascal 中,如果加法操作的運算元是整數型別和其他實數型別,則在執行加法之前,其中一個整數資料物件會隱式轉換為實數型別。

  • 顯式型別轉換 − 一些語言支援一些執行顯式轉換(擴充套件和縮小)的效率方法。在某些情況下,當顯式縮小轉換導致被修改物件的數值發生有意義的變化時,會生成警告訊息。

例如,Pascal 支援一個內建函式 round,它將實數資料物件轉換為整數資料物件,其值類似於實數的四捨五入值。在基於 C 的語言中,顯式型別轉換稱為強制型別轉換。所需型別位於要修改的表示式之前的括號中,例如,對於浮點數 X,(int) X 將 X 的值轉換為整數型別。C 轉換中使用括號的原因之一是 C 有一些由兩個單片語成的型別名稱,例如 long int。

型別轉換的優點

型別轉換具有以下優點:

  • 如果在型別檢查期間,引數的實際型別與該操作的預期型別不匹配,則型別轉換可以輕鬆地隱式轉換資料物件並防止錯誤。

  • 在某些語言(如 C)中,型別轉換是一個內建函式,它隱式地將表示式強制轉換為正確的型別。

  • 在某些不匹配的情況下,會自動呼叫型別轉換。例如,在 Pascal 中,如果算術運算(包括“+”)的引數是混合的實數和整數型別,則在執行加法之前,整數資料物件會隱式轉換為實數型別。

  • 沒有資料被隱藏。因為每個短整數都可以定義為長整數,所以透過呼叫 short int→long int 不會隱藏任何資料。

  • 使用動態型別檢查,轉換或強制轉換是在執行期間識別型別不匹配時構建的。對於此類語言,可以啟用縮小轉換。對於靜態型別檢查,會向編譯的程式新增更多程式碼。

  • 當程式語言中存在大量資料型別時,型別轉換是一個必要的補充。

更新於:2021年10月22日

17K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.