黑马程序员技术交流社区

标题: C语言学习笔记之类型转换 [打印本页]

作者: chunhuayun    时间: 2015-9-20 17:48
标题: C语言学习笔记之类型转换

类型转换分类
        1) 隐式转换(也称为自动转换)
                例:float a = 23.4f;
                        int b = 10;
                        printf("%d",a + b);//有警告结果是1606416392
                        正确做法:int result = a + b;
                        printf("%d",a + b);//无警告,结果是33

                原因:float + int 这是可以运行的,int会自动转换为float,即10-->10.0f
                然后float又转换成int型。舍弃了小数位。
                如:float c = a + b;
                        printf("%f",a + b);//结果33.400002(有效位是7位,其他的无效)
        2) 显式转换(强制类型转换)
                printf("%d", (int)(a + b));//无警告,结果为:33

        3) 转换规则
                double ←── float 高
                ↑
                long
                ↑
                unsigned
                ↑
                int ←── char,short 低

        4) 注意事项
                1)用一个大数加上一个特别小的数,如果使用单精度的float,那么会有问题(造成数据丢失),因为float的有效位只有7位
                int num = 3333;
                float a = 0.000003;
                printf("%f",num + a); //结果为3333.000000
                2)强制类型转换是临时转换
                float a = 23.4f;
                printf("a d= %d", (int)a);//此处是临时转换,不会改变原值
                printf("a f= %f", a);//打印结果:23.400000



作者: 德玛西亚皇子    时间: 2015-9-20 20:25
赞 赞  赞 赞 赞
作者: wx_s1oSwEOC    时间: 2015-9-20 23:20
点个赞

作者: 侯越强    时间: 2015-9-20 23:30
不错不错,加油啊!
作者: 大宝820    时间: 2015-9-20 23:45
楼主写的不错,挺你




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2