C++类型转换

1 隐式转换

1.1隐式转换情况:

(1) 在条件语句中,会自动把非布尔值转换成布尔值;
(2) 在变量初始化和赋值的过程中,右侧对象类型会自动转换成左侧对象类型
(3) 在算术运算中,所有变量会先统一成同一数据类型,在进行计算

1.2 隐式转换的规则:

(1) 小整形(bool、char、unsigned char、short、unsigned short)在算术运算中遇到比int所占空间不小的类型变量时候,小整形变量会先转换成int类型变量;
(2)如果含有小整形变量算术运算中,先进行(1),然后, 在算术运算中所占空间小的变量会自动转换成式子中最大空间的类型,例如 3.14+'a'中 'a'会自动转换成int,再从int转换成double
(3)如果无符号类型与有符号类型进行运算时候,如果无符号类型变量所占空间>=有符号类型变量所占空间,有符号类型会自动转换成无符号类型类型;另外一种情况有符号类型变量所占空间>无符号类型变量所占空间,如果无符号类型能自动转换有符号类型就转换,如果不能,那么会将有符号类型转成无符号类型。

   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 显示转换

强制类型转换形式
cast-name<type>(表达式) 其中:cast-name包括 static_cast、dynamic_cast、const_cast中的一种,type:要转换的类型

(1) static_cast: 是针对普通变量强制类型变量类型
(2) const_cast:是改变对象的底层const

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容