编译器如何为以下两个生成代码有什么不同。其次,它们会产生相同的返回值吗?
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));
}
是的,有:在 C 中,类型转换的优先级高于除法,因此第一个将除以float
,而第二个将执行整数除法。