为啥代码里,温度转换公式里的9要写成9.0呀
不写成9.0就不能通过
#include \u003Cstdio.h>\nint main(){\n int C;\n int F=150;\n C=5*(F-32)/9.0;\n printf("fahr = 150, celsius = %d",C);\n return 0;\n}
这问题你想真正搞明白需要好几个知识点
1.在cpu里计算使用的是加法器乘法器这些硬件,在计算的时候2个二进制数据输入,1个二进制数据输出
2.c语言是比较古早的一种编程语言,它为了适应硬件,规定了在进行计算的时候,两个操作数类型必须一致,这样就可以直接交给硬件进行计算了
3.两个相同类型的数据进行加减乘除,结果也跟它们的类型一致
4.如果两个进行计算的数据类型不一致,会先隐式的转换成类型较大的那一个,比如double除以int,会先把int转换成double,计算结果也是double型
5.5是个int型的常量,5.0是个double型的常量
6.知道了上面5点,那么当你需要5/9的结果有小数,就不能让它们是整型除法,要么把5写成5.0,要么把9写成9.0
因为F是整数。9如果不写成9.0的话,整个表达式都是整数,导致除以9是整除运算,结果只有整数部分,没有小数。所以不行
9默认是int型,而分子也是int型,那么得到的数也会是int(也就是只取整数部作为答案,例如C语言里面的8/5就等于1,1.6取整就是1),但9.0是double,这样得出的数才是double。精度更高。