gpt4 book ai didi

c++ - 以下 C++ 代码用于 -> "#define idiv(a, b) (((a) + (b)/2)/(b))"是什么?

转载 作者:行者123 更新时间:2023-12-01 13:52:16 26 4
gpt4 key购买 nike

我正在处理经常使用一些重要优化的代码。
是什么

#define idiv(a, b) (((a) + (b) / 2) / (b))

用于?为什么不简单

#define idiv(a, b) ((a)/(b) + 0.5)

是整数除法溢出保护还是其他什么?

最佳答案

您建议的修改并不等效,因为 a/b当参数为整数时是整数除法。您应该首先将参数转换为浮点数。

第一个宏避免转换为浮点,这可能会更快。此外,将值转换为浮点数再转换回整数可能会失去精度,因为并非所有整数都可以精确地表示为浮点数。

关于c++ - 以下 C++ 代码用于 -> "#define idiv(a, b) (((a) + (b)/2)/(b))"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60263523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com