C++ 评估数学运算

C++ 评估数学运算,c++,C++,我正在运行以下代码片段: intx,y 浮动val1、val2、val3 x=20 y=25 val1=x-10 val2=y/val1 val3=浮动(val2) val4=浮动(y/(x-10)) 上述产出: val1=10 val2=2.5 val3=2.5 val4=2 有人能解释一下为什么val3和val4的评价不同吗,实际上,当它们都在做相同的计算时?(y/x-10)处理的是整数。直到此计算之后才应用浮点,这将产生2 y和x都是整数。因此,20(x的值)是-10=10。然后25/10

我正在运行以下代码片段:

intx,y
浮动val1、val2、val3
x=20
y=25
val1=x-10
val2=y/val1
val3=浮动(val2)
val4=浮动(y/(x-10))

上述产出:

val1=10
val2=2.5
val3=2.5
val4=2


有人能解释一下为什么val3和val4的评价不同吗,实际上,当它们都在做相同的计算时?

(y/x-10)
处理的是整数。直到此计算之后才应用浮点,这将产生
2


y
x
都是整数。因此,20(x的值)是-10=10。然后25/10(仍然处理整数-还没有浮点数)=2。

它们的计算方式不同

val3 = float(y / float(x - 10))
val4 = float(y / (x - 10)

对于
val3
,类型是
float(int/float)
val4
float(int/int)
,这将首先将
y/(x-10)
的结果强制转换为
int
,然后将其强制转换为
float

,“实际上它们都在做相同的计算时”的可能重复项-错误的先决条件。谢谢@Olaf,这很有帮助。