在本教程中,我們將借助示例學習C ++類型轉(zhuǎn)換的基礎(chǔ)知識。
C ++允許我們將一種類型的數(shù)據(jù)轉(zhuǎn)換為另一種類型的數(shù)據(jù)。這稱為類型轉(zhuǎn)換。
C ++中有兩種類型的類型轉(zhuǎn)換。
隱式轉(zhuǎn)換
顯式轉(zhuǎn)換(也稱為強制類型轉(zhuǎn)換)
相關(guān)轉(zhuǎn)換:將 C ++字符串轉(zhuǎn)換為int C ++ String轉(zhuǎn)換為float / double
由編譯器自動完成的類型轉(zhuǎn)換稱為隱式類型轉(zhuǎn)換。這種類型的轉(zhuǎn)換也稱為自動轉(zhuǎn)換。
讓我們看一下隱式類型轉(zhuǎn)換的兩個實例。
// 隱式類型轉(zhuǎn)換的工作方式 #include <iostream> using namespace std; int main() { // 為num_int分配一個int值 int num_int = 9; // 聲明一個double變量 double num_double; // 隱式轉(zhuǎn)換 // 將int值分配給double變量 num_double = num_int; cout << "num_int = " << num_int << endl; cout << "num_double = " << num_double << endl; return 0; }
輸出結(jié)果
num_int = 9 num_double = 9
在程序中,我們已將int數(shù)據(jù)分配給double變量。
num_double = num_int;
此處,在將int值分配給num_double變量之前,它會由編譯器自動轉(zhuǎn)換為double。 這是隱式類型轉(zhuǎn)換的示例。
//隱式類型轉(zhuǎn)換的工作方式 #include <iostream> using namespace std; int main() { int num_int; double num_double = 9.99; // 隱式轉(zhuǎn)換 // 將一個double值賦給一個int變量 num_int = num_double; cout << "num_int = " << num_int << endl; cout << "num_double = " << num_double << endl; return 0; }
輸出結(jié)果
num_int = 9 num_double = 9.99
在程序中,我們已將double數(shù)據(jù)分配給int變量。
num_double = num_int;
在此,將double值分配給num_int變量之前,編譯器會自動將其轉(zhuǎn)換為int。 這也是隱式類型轉(zhuǎn)換的示例。
注意:由于int不能有小數(shù)部分,因此在上面的示例中,小數(shù)點后的數(shù)字被截斷了。
從上面的示例可以看出,從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型很容易導致數(shù)據(jù)丟失。當較大類型的數(shù)據(jù)轉(zhuǎn)換為較小類型的數(shù)據(jù)時,會發(fā)生這種情況。
當用戶手動將數(shù)據(jù)從一種類型更改為另一種類型時,這稱為顯式轉(zhuǎn)換。這種類型的轉(zhuǎn)換也稱為強制類型轉(zhuǎn)換。
我們可以使用三種主要方法在C ++中使用顯式轉(zhuǎn)換。他們是:
C型類型強制轉(zhuǎn)換(也稱為強制轉(zhuǎn)換符號)
函數(shù)表示法(也稱為老式c++風格的類型轉(zhuǎn)換)
類型轉(zhuǎn)換運算符
顧名思義,這種類型的轉(zhuǎn)換受到C編程語言的青睞。也稱為強制轉(zhuǎn)換表示法。
這種樣式的語法是:
(data_type)expression;
例如,
// 初始化int變量 int num_int = 26; // 聲明double變量 double num_double; // 從int轉(zhuǎn)換為double num_double = (double)num_int;
我們還可以使用類似符號的函數(shù)將數(shù)據(jù)從一種類型轉(zhuǎn)換為另一種類型。
這種類型的語法是:
data_type(expression);
例如,
// 初始化int變量 int num_int = 26; // 聲明double變量 double num_double; // 從int轉(zhuǎn)換為double num_double = double(num_int);
#include <iostream> using namespace std; int main() { // 初始化double變量 double num_double = 3.56; cout << "num_double = " << num_double << endl; // 從double到int的C風格轉(zhuǎn)換 int num_int1 = (int)num_double; cout << "num_int1 = " << num_int1 << endl; // 從double到int的函數(shù)樣式轉(zhuǎn)換 int num_int2 = int(num_double); cout << "num_int2 = " << num_int2 << endl; return 0; }
輸出結(jié)果
num_double = 3.56 num_int1 = 3 num_int2 = 3
我們使用C風格類型轉(zhuǎn)換和函數(shù)樣式轉(zhuǎn)換進行類型轉(zhuǎn)換,并顯示結(jié)果。由于它們執(zhí)行相同的任務(wù),因此兩者都給我們相同的輸出。
除了這兩個類型轉(zhuǎn)換外,C ++還具有四個用于類型轉(zhuǎn)換的運算符。它們被稱為類型轉(zhuǎn)換運算符。他們是:
static_cast
dynamic_cast
const_cast
reinterpret_cast
我們將在以后的教程中了解這些強制轉(zhuǎn)換。