C++ 速查手冊

12.2 - 強制型態轉換

顯性型態轉換規則 (explicit conversion) 包括具名強制轉型 (named cast) 及舊式轉型 (old-style cast) ,可以任意強制將某個型態轉換成另一個型態,前者具名強制轉型的形式如下

cast-name<type>(expression)

cast-name 有以下種類

如下例

#include <iostream>
  
int main() {
    char a = 'a';
    int b = 97;
    
    std::cout << a << std::endl;
    std::cout << b << std::endlstd::cout << static_cast<char>(b) << std::endl;
    std::cout << static_cast<int>(a) << std::endl;
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
   https://kaiching.org/
   檔名:u1202.cpp
   功能:示範 C++ 的型態轉換
   作者:張凱慶*/

編譯後執行,結果如下

$ g++ u1202.cpp
$ ./a.out
a
97
a
97
$

第 9 行強制將整數 97 改以字元型態印出

std::cout << static_cast<char>(b) << std::endl;

而第 10 行強制將字元 'a' 改以整數型態印出

std::cout << static_cast<int>(a) << std::endl;

至於舊式轉型則是利用小括弧圍住型態型稱,然後放置在某一變數或運算式之前,便可將該變數強制轉換成小括弧的資料型態。

形式如下

(type) (expression)

使用顯性型態轉換須注意,通常從可儲存範圍大的資料型態轉換成儲存範圍小的資料型態,例如從 long 轉換成 short ,常常會造成資料的流失,因此須小心使用。

上一頁 12.1 - 隱性型態轉換
回 C++ 速查手冊首頁
下一頁 單元 13 - 其他宣告內容
回 C++ 教材
回程式語言教材首頁