评估数学运算

时间:2016-10-02 17:52:22

标签: c++

我正在运行这段代码:

  

int x, y;
float val1, val2, val3;
x = 20;
y = 25;
val1 = x - 10;
val2 = y/val1;
val3 = float(val2);
val4 = float(y/(x-10));

以上输出:

  

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

有人可以向我解释为什么val3和val4的评价不同吗? ,实际上他们都在进行相同的计算?

2 个答案:

答案 0 :(得分:0)

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

yx都是整数。所以,20(x的值) - 10 = 10.然后25/10(仍然处理整数 - 没有浮点数)= 2.

答案 1 :(得分:0)

它们的评估方式不同。

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

对于val3,类型为float(int / float)val4float(int / int),会先将y / (x - 10)的结果转换为int,然后将其投放到float