gpt4 book ai didi

c++ - 整数回绕的正确方法?

转载 作者:行者123 更新时间:2023-11-27 22:36:40 26 4
gpt4 key购买 nike

什么是相对更好/更正确的方法来确保整数值始终在 for 循环中环绕 from 0 to max 8? (我正在使用 32 次迭代,就像这里的例子一样)我找到了三个选项(A、B 和 C)

例子:

int x = 0;
const int max = 8; // EDIT: Always in the power of two.

for (int i = 0; i < 32; ++i)
{
// EDIT: "x++;" usage was incorrect here.
x = i;

// x = x % max; // A
// x &= max - 1; // B
// x &= ~max; // C (EDIT: Incorrect, dont use...)

std::cout << "x: " << x << std::endl;
}

还有什么建议吗?

编辑:性能至关重要,需要最快的解决方案。我看到在一些第三方性能关键代码中使用了“x &= ~max”。看起来他们用这个技巧绕了一圈。它是否有效或比其他解决方案更快?

谢谢。

最佳答案

在这种特殊情况下,B 和 C 都有效,但只有当 max 恰好是 2 的幂时才有效。如果不是,%= 将和其他任何东西一样快。

关于c++ - 整数回绕的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53288146/

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