Допустим, у нас есть x и y, и оба являются целыми числами со знаком в C, как нам найти наиболее точное среднее значение между ними?
Я бы предпочел решение, которое не использует преимущества какой-либо машины / компилятора Особенности работы / toolchain.
Лучшее, что я придумал, это: (a / 2) + (b / 2) + !! (a% 2) * !! (b% 2)
Есть ли более точное решение? Быстрее? Проще?
Что, если мы знаем, что один из них больше другого априори?
Спасибо.
D
Примечание редактора : Обратите внимание, что OP ожидает ответов, которые не подлежат целочисленному переполнение, когда входные значения близки к максимальным абсолютным границам типа C int
. Об этом не было сказано в исходном вопросе, но это важно при ответе.