Возьмем среднее значение двух чисел со знаком в C

Допустим, у нас есть x и y, и оба являются целыми числами со знаком в C, как нам найти наиболее точное среднее значение между ними?

Я бы предпочел решение, которое не использует преимущества какой-либо машины / компилятора Особенности работы / toolchain.

Лучшее, что я придумал, это: (a / 2) + (b / 2) + !! (a% 2) * !! (b% 2) Есть ли более точное решение? Быстрее? Проще?

Что, если мы знаем, что один из них больше другого априори?

Спасибо.

D


Примечание редактора : Обратите внимание, что OP ожидает ответов, которые не подлежат целочисленному переполнение, когда входные значения близки к максимальным абсолютным границам типа C int . Об этом не было сказано в исходном вопросе, но это важно при ответе.

11
задан Greg Hewgill 18 April 2011 в 01:00
поделиться