● 图中横向箭头表示必须的转换,如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。 纵向箭头表示当运算符两边的运算数为不同类型时的转换,如一个long 型数据与一个int型数据一起运算,需要先将int型数据转换为long型, 然后两者再进行运算,结果为long型。所有这些转换...
// 第二个printf结果为4说明int转为了float(4字节),而非int和float都转为了double(8字节) // 2.float + float →float 而不是 float + flaot →double float float_b = 1.5; printf("%f\n",float_a + float_b); //4.000000 printf("%d\n",sizeof(float_a + float_b)); //4 // 备注:第一...
题主问题的回答就是,float是否变为double运算,是compiler决定的。
因此,c语言中整型和浮点型混合运算,只能是整型和浮点型同时强制转换为相同的double型(双精度浮点类型)。如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。
可以用判断语句啊,if() {} else {}来处理,如果只是在其中某处要用到,只需要用强制转化就可以了,强制转化主要是高级向低级的转换,如double向float的转换,低级向高级不用强制转化。
楼上的几位说得不是很对,当你在声明一个常量的时候例如1.33只要你没有在后面加个f也就是1.33f 那么系统默认的存储方式就是double 如果你要直接把常量赋值给double b=1.33 其实没有结果任何转换 要是声明为1.33f也可以直接用double b=1.33 f double的精度要高于float所以不用强制转换 00分享举报您...
用强制转换即可 (double)变量名 字母小写
是转换成Float类型,而不是double。后面不加F的float a = 10.1;这种,浮点数10.1自动认为是double类型,但是定义的float,所以会有类型转换。
sscanf(,"%f",);这样得到的是float类型的,然后将其强制转换为double类型
楼上的几位说得不是很对,当你在声明一个常量的时候例如1.33只要你没有在后面加个f也就是1.33f 那么系统默认的存储方式就是double 如果你要直接把常量赋值给double b=1.33 其实没有结果任何转换 要是声明为1.33f也可以直接用double b=1.33 f double的精度要高于float所以不用强制转换 ...