Иногда мне нужно быть уверенным, что некоторое целое число равно. Поэтому я мог бы использовать следующий код:
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;
но (к тому же, не будучи читаемым), я не уверен, что решение полностью переносимо.
- Какое решение вы считаете лучшим?
- Является ли второе решение полностью переносимым?
- Является ли второе решение значительно быстрее, чем первое?
- Какие еще решения вы знаете по этой проблеме?
- Что делать, если я делаю это внутри встроенного метода? Он должен (теоретически) быть таким же быстрым, как эти решения, и читаемость больше не должна быть проблемой, делает ли это второе решение более жизнеспособным?
note: этот код должен работать только с положительными целыми числами, но с решением, которое также работает с отрицательными числами, будет плюсом.