сделать целое число четным

Иногда мне нужно убедиться, что какое-то целое число четное. Таким образом, я мог бы использовать следующий код:

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;

но (кроме того, что он не читабельно) Я не уверен, что решение полностью переносимо.

  • Какое решение вы считаете лучшим?
  • Является ли второе решение полностью переносимым?
  • Второе решение значительно быстрее, чем предыдущее. сначала?
  • Какие еще решения этой проблемы вы знаете?
  • Что, если я сделаю это внутри встроенного метода? Оно должно (теоретически) быть таким же быстрым, как и эти решения, и удобочитаемость больше не должна быть проблемой, делает ли это второе решение более жизнеспособным?

примечание: Предполагается, что этот код работает только с положительными целыми числами, но наличие решения, которое также работает с отрицательными числами, было бы плюсом.

13
задан NotMe 20 January 2011 в 19:13
поделиться