温度由华氏转化为摄氏:
#include<stdio.h>
int main()
{
float f;
float c;
scanf("%f",&f);
c=5/9*(f-32);
printf("%f",c);
return 0;
}
上面的结果输出是0;
#include<stdio.h>
int main()
{
float f;
float c;
scanf("%f",&f);
c=5.0/9*(f-32);
printf("%f",c);
return 0;
}
上面输入86输出30;
所产生的区别在于5/9与5.0/9
5/9=0.5555555555…
第一个中5/9因为5与9是Int型所以产生的结果为0.000000,
而在第二个中5.0/9则5.0为浮点型表示所以结果也是采用浮点型表示,5.0/9=0.555556.
这就导致了计算结果的不同,造成错误。
当两个不同数据类型的表达式用运算符组合后,数据类型优先级规则指定将优先级较低的数据类型转换为优先级较高的数据类型。 如果此转换不是所支持的隐式转换,则返回错误。 当两个操作数表达式具有相同的数据类型时,运算的结果便为该数据类型。