Это мой рекомендуемый способ:
int low = floor(x / 2.0f);
int high = ceil(x / 2.0f);
Я считаю, что это более кратко, чем x/2 + x%2
версия.
Эта версия также выигрывает от того факта, что вывод будет правильным, если вы запустите его, используя четное число.
EDIT:
Люди, похоже, жаловались на то, что я использую числа с плавающей запятой для целых чисел, ну вот полностью битовая версия:
int a = 9;
int b = a >> 1;
int c = b | (a & 0x1);
Единственное предостережение с # 2 заключается в том, что если входные данные отрицательные, результаты не будут такими, как ожидалось.