c/c++自动类型转换

3 篇文章 0 订阅
学习各种语言,必须要有扎实的基础知识。C和C++有很多灵活性的东西,所以在编程时一定要牢记这些知识点。
->不同类型数据间的混合运算中的自动类型转换。
    当一个表达式中有不同的数据类型参加时,默认情况下会进行自动类型转换。转换过程当中以运算中最高级别为准。
        
     其中横向箭头是必定发生的转换。纵向箭头是可以直接越级的。另外必定发生的转换是因为数据长度的不同的,计算的时候目的是为了保证精度。

举例:
       int a = - 20;
       unsigned char b = 20;
       unsigned int c = 20;
       int d = 0;

    (1)   d = a/b ;//结果是-1
    (2)   d = a/c ;// 结果你可能想不到,可以自己试验,当然这里整数除法还要考虑到余数的舍去问题
    (3)   d = a/(int)c;//结果是-1
这个例子中式(1)中b是自动转换成int型的,横向的转换。式(2)的问题是unsigned int 实际比int级别要高,所以进行了自动转换,将a转换成了无符号型,如果这个值是正值,这里不会有问题,但是负值就有问题了。所以式(2)要改写成式(3)的样式,即进行强制转换。
    
强制类型转换相对直白,但是必须注意转换中可能会丧失的有效字节。其实这种转换是不安全的。
       




         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值