操作顺序int(4 * x / y)vs int(x /(y / 4))

时间:2013-07-18 23:36:28

标签: c++ int expression operator-precedence

假设x和y的类型为int。

这两个表达式是什么:

int(4*x/y)

int(x/(y/4))
对于x类型的所有yint

始终评估为相同?它们应该是数学上的,但只有第二个表达式在我编写的程序中是一致的(即产生预期值)。

2 个答案:

答案 0 :(得分:1)

在许多编程语言中,4*x/yx/(y/4)是不同的,因为y/4是一个整数,是y除以4的截断结果。 4*x/y中不存在此类截断。当y1时明显不同,在这种情况下,第二个表达式除以零,而第一个表达式计算4*x

答案 1 :(得分:1)

我假设x和y是整数

当然不是:) on integers:x / 4 = floor(x / 4)数学

给你:

地板(4 * X / Y) 和 地板(X /地板(Y / 4))