C++類型轉(zhuǎn)換

1 隱式轉(zhuǎn)換

1.1隱式轉(zhuǎn)換情況:

(1) 在條件語句中,會自動把非布爾值轉(zhuǎn)換成布爾值;
(2) 在變量初始化和賦值的過程中,右側(cè)對象類型會自動轉(zhuǎn)換成左側(cè)對象類型
(3) 在算術(shù)運(yùn)算中,所有變量會先統(tǒng)一成同一數(shù)據(jù)類型,在進(jìn)行計(jì)算

1.2 隱式轉(zhuǎn)換的規(guī)則:

(1) 小整形(bool、char、unsigned char、short、unsigned short)在算術(shù)運(yùn)算中遇到比int所占空間不小的類型變量時(shí)候,小整形變量會先轉(zhuǎn)換成int類型變量;
(2)如果含有小整形變量算術(shù)運(yùn)算中,先進(jìn)行(1),然后, 在算術(shù)運(yùn)算中所占空間小的變量會自動轉(zhuǎn)換成式子中最大空間的類型,例如 3.14+'a'中 'a'會自動轉(zhuǎn)換成int,再從int轉(zhuǎn)換成double
(3)如果無符號類型與有符號類型進(jìn)行運(yùn)算時(shí)候,如果無符號類型變量所占空間>=有符號類型變量所占空間,有符號類型會自動轉(zhuǎn)換成無符號類型類型;另外一種情況有符號類型變量所占空間>無符號類型變量所占空間,如果無符號類型能自動轉(zhuǎn)換有符號類型就轉(zhuǎn)換,如果不能,那么會將有符號類型轉(zhuǎn)成無符號類型。

   char cval;
    int ival;
    unsigned int ui;
    float fval;
    double dval;
    cout << sizeof(cval) << " c: " << sizeof(ival) << " i: " << sizeof(ui) << " ui: " 
         << sizeof(fval) << " f: " << sizeof(dval) << " d:"<< endl;
    cout << sizeof(cval = 'a'+3) << endl;
    cout << sizeof (fval=(ui-(ival * 1.0))) << endl;
    cout << ui*fval << endl; // 4.39882e-032  類型 float
    cout << sizeof(ui*fval) << endl;
    cout << sizeof(dval=ui*fval) << endl;  // float-> double
    return 0;

2 顯示轉(zhuǎn)換

強(qiáng)制類型轉(zhuǎn)換形式
cast-name<type>(表達(dá)式) 其中:cast-name包括 static_cast、dynamic_cast、const_cast中的一種,type:要轉(zhuǎn)換的類型

(1) static_cast: 是針對普通變量強(qiáng)制類型變量類型
(2) const_cast:是改變對象的底層const

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容