物聯網/嵌入式工程師
重磅升級:新增硬件電路設計與實戰,讓你軟硬通吃,同級PK無敵!行業風口、政策傾斜,新晉熱門高薪不內卷!0基礎一站式就業完整路徑,搶占先發優勢!
我們之前一節介紹了基本數據類型,知道了在 C++ 中存在很多不同的數據類型,那么數據類型之間可以互相轉換嗎?
首先我們來看比較明顯的轉換
#include <stdio.h> int main(int argc,char **argv) { int a = 100; short b = a; return 0; }
這段程序中,我們把一個 int 變量賦值給了一個 short 變量,我們在之前的課程中學習過,short 通常占兩個字節,int 通常占用 4 個字節,也就是說,short 的"容量"其實是要比 int 的"容量"要小的。當出現這種情況的時候,就像是把一個大杯子里的水倒進一個小杯子,是有可能溢出來撒一地的。在 C++ 中,這樣做是有可能損失數據的,所以 C++ 是不允許我們直接進行轉換的。那么如何才能強制將一個 int 轉換為 short 呢?我們將代碼改成下面這樣就可以了
#include <stdio.h> int main(int argc,char **argv) { int a = 100; short b = (short)a; return 0; }
修改后代碼就不報錯了,這里我們在 a 前面加上了 (short),就是要告訴我們的編譯器,我很清楚我在做什么,我就是要將 int 轉換成 short,我們管這種轉換叫做強制轉換,因為在轉換的時候我們寫清楚了要轉換的類型是什么,所以也叫做顯式轉換。
接下來,我們再來看看隱式轉換,還是來看一段代碼
#include <stdio.h> int main(int argc,char **argv) { short a = 100; int b = a; return 0; }
我們把一個 short 類型轉換成一個 int 類型,這里沒有使用 (int) 之類的代碼,程序也沒有報錯。這是因為在這里,我們把一個比較小的數據類型轉換成了一個比較大的數據類型,數據在轉換的過程中是安全的,不會損失精度,那么在這種情況下,C++ 允許直接進行轉換,由于在轉換的時候沒有進行指定數據類型,所以叫做隱式轉換。
隱式轉換會遵守一個推演表,依照這個順序進行轉換,就不需要顯式得指明類型
提示:按住鍵盤上的Ctrl鍵,鼠標滾輪向上滾動,圖片就可以看清楚了
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報