c语言为什么输出等于0

img

img

img

为什么第二种方法输出来结果为0,但是第一种就是对的

a0.2+b0.3这个表达式的结果,应该是浮点类型。第一种方式, 因为d是整形,所以结果被隐式转换成了整形,保留了整数部分结果,而第二种方式并没有转换,结果就是个浮点型的值,但是显示的参数是%d,用整形的方式去解释一个浮点型数,结果是不可预料的。

输入一样嘛
这下面这个编译器用上面的方法是对的嘛

因为第一种,s=a0.2里面包含了隐式转换,所以你%d可以输出,但是第二种,a0.2是浮点数,你没有转换直接用整型来输出,自然不能。

printf函数并没有数据类型转换的功能,他只会把相应内存的二进制数据按照指定的规则输出

printf("%lf", a*0.2+b*0.3+c*0.5);