Reputation: 19157
I have thiselse
clause:
else if (iItemIndex == 1 || iItemIndex == 3 || iItemIndex== 5 || iItemIndex == 7 ||
iItemIndex == 10 || iItemIndex == 12 || iItemIndex == 14 || iItemIndex == 16 ||
iItemIndex == 19 || iItemIndex == 21 || iItemIndex == 23 || iItemIndex == 25)
Can it be simplified in some way? Nothing wrong with the code. Just curious if there is a less verbose way of doing the test. In context I have:
if(iItemIndex == 0 || iItemIndex == 9 || iItemIndex == 18)
{
// Do something
}
else if (iItemIndex == 1 || iItemIndex == 3 || iItemIndex== 5 || iItemIndex == 7 ||
iItemIndex == 10 || iItemIndex == 12 || iItemIndex == 14 || iItemIndex == 16 ||
iItemIndex == 19 || iItemIndex == 21 || iItemIndex == 23 || iItemIndex == 25)
{
// Do something else
}
else
{
// Do something else
}
Upvotes: 0
Views: 53
Reputation: 39953
You can write
const bool rng=i>=0 && i<27;
if(const auto r=i%9; rng && !r) …
else if(rng && (r&1)) …
else …
This can of course be much simplified if the value may be assumed to be in the relevant range:
if(const auto r=i%9; !r) …
else if(r&1) …
else …
Upvotes: 1