Fra*_*ler 0 c++ performance constexpr c++17
我写了这个简单的辅助constexpr函数:
#include <cstdint>
constexpr bool isEven(uint32_t value) { return ((value%2) == 0); }
Run Code Online (Sandbox Code Playgroud)
这非常简单。我想知道这是否被认为是确定某个整数值是奇数还是偶数的最有效方法?目前我并不担心为不同的积分类型模板化这个函数。我只是在追求效率和性能,同时牢记便携性。
编辑
为了提供一些上下文,我可能会在一个循环中调用这个函数,该循环可以迭代 100,000 次到 100,000,000 次或更多...所以效率是这里的关键,但可移植性仍然是一个因素...
正如其他人在评论或答案中所述,我曾通过检查最低有效位来考虑“按位运算”,但是,我不确定编译器是否会在这种情况下优化模运算符。
关于可移植性,我不确定“字节序”或“整体约定”是否是应该使用实现的主要因素。考虑一个仅实现 1 的补码而不是 2 的补码的系统,或者使用 Big Endian 而不是 Little 的系统,可能需要加以考虑。
您可以直接使用&( AND ) 运算符。
如果x是你的int:
x & 1 // returns 1 if odd, else 0
Run Code Online (Sandbox Code Playgroud)
这可能是查找整数是奇数还是偶数的最佳方法。
| 归档时间: |
|
| 查看次数: |
1040 次 |
| 最近记录: |