Для лучшей точности / точности вы захотите сделать свои умножения перед делением. Как вы подразумеваете, вы захотите использовать что-то с вдвое большим количеством битов, чем int:
int64_t d = (int64_t) a * (int64_t) b;
d /= c;
Вам не нужны оба приведения, но они, вероятно, делают это немного яснее.
Обратите внимание, что если c достаточно мало, то d все равно может быть больше, чем int. Это может или не может быть проблемой для вас. Если вы уверены, что это не так, вы можете привести к int в конце.