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