【发布时间】:2020-02-20 04:38:49
【问题描述】:
我有一个函数可以进行舍入操作,如下所示。它以 64 位整数作为输入,并给出 32 位整数作为输出。转换时,0x40000000 的因子被添加到输入中。背后的原因是什么?
int rounder(long long int in)
{
INT64 out;
if ((in >> 32) == 0x7FFFFFFF)
out = in;
else
out = (INT64)0x40000000 + in;
out = out >> 31;
return (INT32)out;
}
【问题讨论】:
-
我没有看到
var习惯了 -
请显示INT64和INT32的定义,以及你得到的样本输入和输出。最好发stackoverflow.com/help/minimal-reproducible-example
-
@EduardoPascualAseff..嗨,我已经编辑了代码
-
负值舍入不正确。
-
return (INT32)out对于out附近的LLONG_MAX值不正确。这段代码有很多错误。