这是一个将华氏温度转化为摄氏温度的函数,为什么输出华氏温度后,输出的摄氏温度值一直为0呢?
#include<iostream>
#include<cstdlib>
using namespace std;
int ftoc(int f)
{
int c;
c = (5 / 9 * (f - 32));
return c;
}
int main()
{
int fahr;
int celi;
cout << "please enter the fahr: ";
cin >> fahr;
celi = ftoc(fahr);
cout << "the celi is: " << celi << endl;
system("pause");
return 0;
}
c = (5 / 9 * (f - 32));
因为在C++里运算是从左边到右边的,/和*的运算级别是一样的,所以先算5 / 9 在C++里其计算结果为0,所以 0 * (f - 32)都为0
改为:
double c;
c = (static_cast<double>(5) / 9 * ( f - 32 ));
5/9为小数,定义的是整数int,那么0.555....小数点后面都会被舍弃,最后结果得出的是0,0乘以任何数都会得0