A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chunhuayun 中级黑马   /  2015-9-20 17:48  /  1005 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


类型转换分类
        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


4 个回复

倒序浏览
赞 赞  赞 赞 赞
回复 使用道具 举报
点个赞
回复 使用道具 举报
不错不错,加油啊!
回复 使用道具 举报
大宝820 来自手机 中级黑马 2015-9-20 23:45:19
报纸
楼主写的不错,挺你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马