在嵌入式开发中,常常涉及到数据类型的转换。经过比较,将几种经典案例总结如下。欢迎大家交流。
1、int 与 float 的转换
1 int a = 3;2 int b = 4;3 floatc;4 c = a/b;
上面代码运行结果为0.000000
int a = 3;int b = 4;floatc;
c= (float)a/b;
上面代码运行结果为0.750000
1 int a = 3;2 int b = 4;3 floatc;4 c = (float)(a/b);
上面代码运算结果为0.000000
1 int a = 3;2 int b = 4;3 floatc;4 c = a/(float)b;
上面代码运算结果为0.750000
第一段代码,a为int类型,b为int类型,int类型的除法只保留整数。然后等式右边的数据类型向等式左边的数据类型隐式转换。
第二段代码,将a转为float类型,然后在与b相除。b是int类型,a是float类型。b向a的类型转换。则全部为float类型。故计算结果为浮点型。
第三段代码,使用括号将a/b先运算,由于是整数的除法,所以运算结果为0,又因为等号右边自动向等号左边数据类型转化,最终为0.000000。
第四段代码,将b转为float类型,然后在被a除,int除以float,低类型自动向高类型转换。a/b变为float类型除法。故计算结果为0.000000。
总结:等号右边的数据类型会自动向等号左边的数据类型转换
算式中,若存在数据类型不同的数据,低等级的数据类型自动向高等级的数据类型转换。
2、float向int类型转换