- 21天學通C++
- 陳龍等編著
- 572字
- 2018-12-29 13:31:59
2.4 類型轉換
類型轉換是用來把一個類型的值轉換成另一個類型。C++是強類型的語言,即其每一個值都有它相應的類型。當用戶需要把一個值轉換為另一個類型時,就需要使用一些方式進行類型轉換。C++中,支持隱式轉換和顯式轉換兩種。
2.4.1 隱式轉換
隱式轉換就是系統(tǒng)默認的,不需要加以聲明就可以進行的轉換。在隱式轉換過程中,編譯器無須對轉換進行詳細檢查就能夠安全地執(zhí)行轉換。比如從int類型轉換到long類型就是一種隱式轉換。隱式轉換一般不會失敗,轉換過程中也不會導致信息丟失。
【范例2-8】隱式轉換的實現(xiàn)。該范例實現(xiàn)數據類型的隱式轉換,將字符型變量轉換為整型變量,實現(xiàn)代碼如代碼清單2-8所示。
代碼清單2-8
1 #include <iostream.h> 2 void main() 3 { 4 char ch; //聲明字符型變量 5 ch='a'; 6 int i=ch; //聲明整型變量并賦初值,隱式轉換 7 cout<<ch<<endl; //輸出 8 cout<<i<<endl; 9 }
【運行結果】在Visual C++中創(chuàng)建一個【C++ Source File】,將上述代碼輸入其中,輸出結果如圖2-13所示。

圖2-13 隱式轉換
【范例解析】范例2-8程序中,聲明了一個字符型變量ch和一個整型變量i,并在聲明變量i的同時給其賦初值ch的值,此處就需要將字符型的值轉換為整型值,Visual C++編譯器自動實現(xiàn)了其之間的轉換,稱為隱式轉換。
提示:圖2-13中輸出整型變量i的值為97,這是因為字母a對應的ASCII碼值為97。由此可看出,字符型和整型數據類型之間可以相互轉換。
2.4.2 顯式轉換
通常,隱式轉換意味著編譯器認為轉換是合理的或者是安全的。此外,C++還支持顯式轉換,顯式轉換是用戶手動指出需要轉換的類型。顯式轉換意味著編譯器能夠找到一個轉換方式,但是它不保證這個轉換是否安全,而是需要程序員額外指出。
C++的顯式轉換提供了更精確的語義和對其進一步擴展的可能。在C語言中,讀者可以用一個簡單的(int)來完成2.4.1節(jié)中字符型到整型的轉換。
【范例2-9】顯式轉換的實現(xiàn)。該范例實現(xiàn)了數據類型之間的顯式轉換,將字符型變量通過()符顯式轉換為整型變量,實現(xiàn)代碼如代碼清單2-9所示。
代碼清單2-9
1 #include <iostream.h> 2 void main() 3 { 4 char ch; //聲明字符型變量 5 ch='a'; 6 int i; //聲明整型變量并賦初值 7 i=(int)ch; //顯式轉換 8 cout<<ch<<endl; //輸出 9 cout<<i<<endl; 10 }
【運行結果】在Visual C++中創(chuàng)建一個【C++ Source File】,將上述代碼輸入其中,輸出結果如圖2-14所示。

圖2-14 顯式轉換
【范例解析】范例2-9代碼中,使用了語句“i=(int)ch;”將字符型變量ch的類型強制轉換為整型,其運行后的效果與如圖2-13所示相同。事實上,C++中為顯式類型轉換提供了四種不同的操作符:static_case、dynamic_cast、const_cast、reinterpret_cast。
注意:C++的顯式轉換通過區(qū)分各種轉換情況來增加安全性:通過const_cast來取消const、volatile之類的修飾,通過static_cast來做相關類型的轉換,通過reinterpret_cast來做低級的轉換等。
- 虛擬儀器設計測控應用典型實例
- 軟件架構設計
- PostgreSQL 11 Server Side Programming Quick Start Guide
- 數據運營之路:掘金數據化時代
- 分布式多媒體計算機系統(tǒng)
- JSF2和RichFaces4使用指南
- 四向穿梭式自動化密集倉儲系統(tǒng)的設計與控制
- 基于ARM 32位高速嵌入式微控制器
- 大數據驅動的設備健康預測及維護決策優(yōu)化
- 數據庫系統(tǒng)原理及應用教程(第5版)
- 愛犯錯的智能體
- Photoshop行業(yè)應用基礎
- 網絡存儲·數據備份與還原
- Mastering Ansible(Second Edition)
- Advanced Deep Learning with Keras