一、c++類型轉換
// 精度損失:float -> int #include<iostream> using namespace std; int main() { float f = 3.5f; int i = f; //f自動轉換成int類型 cout << i << endl; //輸出3, 精度被損失 return 0; }
c++中的隱式類型轉換與js比起來略微有些嚴格。由上述代碼可知,當一個變量的類型被強制轉換時,如果轉換會導致精度損失,則編譯器會發出警告提示。
二、強制類型轉換C語言
//強制類型轉換1:C語言風格 #include<iostream> using namespace std; int main() { int i = 10; float f = (float)i; //C語言風格, 強制類型轉換 cout << f << endl; //輸出10.0 return 0; }
強制類型轉換C語言的風格與js轉換類型的方式相同。當將一個高精度類型的變量賦值給低精度類型,或者當需要使用一種類型的變量作為另一種類型的參數時,可以使用強制類型轉換來滿足編譯器的檢查。
三、強制類型轉換
//強制類型轉換2:C++風格 #include<iostream> using namespace std; int main() { int i = 10; float f = static_cast<float>(i); //C++風格,強制類型轉換 cout << f << endl; return 0; }
C++風格的類型轉換使用關鍵字`static_cast`來轉換類型。由於代碼中使用了強制類型轉換,所以編譯器不再發出警告。
四、c強制類型轉換舉例
#include<iostream> using namespace std; int main() { int i = 97; char c = (char)i; //強制類型轉換為char cout << c << endl; //輸出a return 0; }
c強制類型轉換也是一種強制類型轉換的方式,可以將一個變量轉換為另一個具有不同數據類型的變量。
五、c語言類型轉換
#include<iostream> using namespace std; int main() { int i = 100; float f = (float)i; //強制類型轉換, c語言風格 cout << f << endl; //輸出100.0 return 0; }
c語言中的類型轉換也可以使用強制類型轉換的方式來實現。將一個變量轉換為另一個不同類型的變量時,必須使用括號將變量名括起來,並在括號之前加上新要轉換的類型的標識符。
六、隱式類型轉換
#include<iostream> using namespace std; int main() { float f = 3.5f; int i = f; //隱式類型轉換 cout << i << endl; //輸出3 return 0; }
在ts類型轉換中,隱式類型轉換是一種自動完成的類型轉換方式。當ts需要一種類型的變量作為另一種類型的參數時,ts會自動將兩種不同類型的變量之間進行隱式類型轉換。從上述代碼可以看到,當將一個float類型的變量賦值給int類型的變量時,會發生隱式類型轉換,但是會導致精度上的損失。
七、轉換類型class
class Animal { public: virtual void run(); }; class Dog : public Animal { public: void run() { cout << "小狗在跑!" << endl; } void eat() { cout << "小狗在啃骨頭!" <(animal1); dog1->run(); //輸出:小狗在跑! dog1->eat(); //非法,無法訪問 return 0; }
在ts類型轉換中,有時需要將一個派生類的指針轉換為一個基類的指針,或將一個基類的指針轉換為一個派生類的指針,轉換類型class便可滿足這一需求。
八、自動類型轉換
#include<iostream> using namespace std; int main() { int i = 10; double d = i; //自動類型轉換 cout << d << endl; //輸出10 return 0; }
自動類型轉換是一種非常常見的類型轉換方式,編譯器會自動將其中一種類型的變量轉換為另一種類型的變量,以便匹配相應的數據類型。在上述代碼中,將一個int類型的變量賦值給double類型的變量,編譯器會進行自動類型轉換。
九、nat轉換類型
#include<iostream> using namespace std; int main() { int i = 10; int* p = &i; double* pd = static_cast<double*>(static_cast<void*>(p)); *pd = 3.5; cout << i << endl; //輸出1745489024 cout << *pd << endl; //輸出3.5 return 0; }
nat轉換類型是將一個指針類型轉換為另一種類型指針類型的過程。有時會需要將一個非常量指針類型轉換為另一種非常量指針類型,例如將int指針類型轉換為double指針類型。這種情況下,可以使用nat轉換類型來滿足這一需求。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/254900.html