В Python и Ruby целочисленное деление со знаком округляется до отрицательной бесконечности, а целочисленный модуль со знаком имеет тот же знак, что и второй операнд:
>>> (-41) / 3
-14
>>> (-41) % 3
1
Тем не менее, в C и Java целочисленное деление со знаком делится на 0, а целочисленный модуль со знаком имеет тот же знак, что и первый операнд:
printf("%d\n", (-41) / 3); /* prints "-13" */
printf("%d\n", (-41) % 3); /* prints "-2" */
Каков самый простой и эффективный способ в C для выполнения того же типа деления и модуля, что и в Python и Ruby?