c/c++自动类型转换

来源:互联网 发布:淘宝卖家刷信誉被处罚 编辑:程序博客网 时间:2024/05/05 13:00
学习各种语言,必须要有扎实的基础知识。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)的样式,即进行强制转换。
    
强制类型转换相对直白,但是必须注意转换中可能会丧失的有效字节。其实这种转换是不安全的。
       




         
0 0
原创粉丝点击