编译器将如何为以下两个生成代码有什么不同。其次,它们是否会产生相同的返回值。
static inline float fix2float(int64_t f)
{
return (float)f / ((int64_t)1 << 60);
}
还有这个
static inline float fix2float(int64_t f)
{
return (float)(f / ((int64_t)1 << 60));
}
最佳答案
这两个函数非常不同:第二个执行整数除法,而第一个执行 float 。
特别是,第二个版本的返回值始终是 [-8, 7] 范围内的整数。
更新: 当然,这只有在您首先更正 the typo that unwind caught 时才是正确的。 .
关于c - 这两个实现之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16085380/