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,这很有帮助。