C++在同一行上进行除法,乘法和加法的问题

-2 c++

这是用C++编写的,我的程序问题将Celsius转换为Fahrenheit.

我遇到问题的一条线是我的转换方程线:

fahrenheitTemp = (9 / 5) * celsiusTemp + 32
Run Code Online (Sandbox Code Playgroud)

当我1.8代替时,等式/程序工作正常,9 / 5但由于某种原因,9 / 5永远不会乘以celsiusTemp.它总是返回值celsiusTemp + 32.

程序的其余部分是好的,它只是9 / 5没有做任何事情,我甚至尝试了所有不同类型的组合括号等.

Sam*_*tep 8

你的问题是你使用整数除法而不是浮点除法.这个表达式:

9 / 5
Run Code Online (Sandbox Code Playgroud)

评估为:

1
Run Code Online (Sandbox Code Playgroud)

因为它扔掉了0.8其余部分.如果要使用浮点除法,则需要确保一个或两个操作数都是浮点类型:

fahrenheitTemp = (9.0 / 5.0) * celsiusTemp + 32;
Run Code Online (Sandbox Code Playgroud)

如果farenheitTempint,你还需要回到int以后.

fahrenheitTemp = static_cast<int>((9.0 / 5.0) * celsiusTemp + 32);
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,但你应该使用C++命名的强制转换(`static_cast <int>(...)`)而不是弃用的C风格的强制转换. (2认同)