Иногда мне нужно быть уверенным, что какое-то целое число четное.В качестве такового я мог бы использовать следующий код:
int number = /* magic initialization here */;
// make sure the number is even
if ( number % 2 != 0 ) {
number--;
}
, но это не кажется очень эффективным наиболее эффективным способом сделать это, поэтому я мог бы сделать следующее:
int number = /* magic initialization here */;
// make sure the number is even
number &= ~1;
но (кроме того, что он не читается), я не уверен, что решение полностью переносимо.
- Какое решение вы считаете лучшим?
- Является ли второе решение полностью переносимым?
- Второе решение значительно быстрее первого?
- Какие другие решения вы знаете для этой проблемы?
- Что если я сделаю это внутри встроенного метода?Оно должно (теоретически) быть таким же быстрым, как эти решения, и читаемость больше не должна быть проблемой, делает ли это второе решение более жизнеспособным?
примечание: этот код должен работать толькос положительными целыми числами, но решение, которое также работает с отрицательными числами, будет плюсом.