我想迭代一个整数的所有可能值。此代码不起作用,因为终止条件永远不会变为假:
for (uint32_t i = 0; i <= 0xFFFFFFFF; i++)
std::cout << i << std::endl;
我想出了这个:
auto loopBody = [](uint32_t value)
{
std::cout << value << std::endl;
};
uint32_t last = 0xFFFFFFFF;
for (uint32_t i = 0; i < last; i++)
loopBody(i);
loopBody(last);
虽然它相当丑陋。有没有更好的方法来做到这一点?
最佳答案
我会用这样的东西:
uint32_t i = 0;
do
{
// Your code here.
i++;
}
while (i != 0);
我个人认为它比涉及 std::numeric_limits
的解决方案更优雅。
正如@NicosC 所说,请记住,您不应该对有符号 整数做同样的事情,因为有符号溢出是未定义的行为。
关于c++ - 迭代无符号整数的所有值的最漂亮方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36239857/