Каков был бы относительно лучший / более правильный способ гарантировать, что целочисленное значение всегда будет иметь значение от 0 до макс. 8 в цикле for? ( Я использую 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 » в некоторых сторонних кодах, критичных к производительности. Похоже, они обернулись, используя этот трюк. Это действительно или быстрее, чем другие решения?
Спасибо.