假设我们有三个整数(int、long、long long、unsigned int 等)变量a, b, c
。通常情况下,执行
c = a / b;
将导致分数截断。但是,c 有可能得到错误的值吗?
我不是在谈论 a / b 可能超出范围c's type.
相反,我谈论的是如何在 C 中实现整数除法。a / b
先生成一个float类型的中间结果,然后将中间值截断?
如果是这样,我想知道中间值的精度损失是否会导致 c 值不正确。例如,假设 a / b 的精确值为 2,但不知何故中间结果为1.9999...
,因此 c 最终会得到错误的值 1。这种情况会发生吗?或者如果预期值在 c 类型的范围内,整数除法是否总是会得到正确的值?
是否先执行a/b会生成float类型的中间结果
就语言而言,没有中间结果。
如果期望值在 c 类型的范围内,整数除法是否总是得到正确的值?
Yes.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)