В c-программе я пытался выполнить приведенные ниже операции (просто чтобы проверить поведение)
x = 5 % (-3);
y = (-5) % (3);
z = (-5) % (-3);
printf("%d ,%d ,%d", x, y, z);
дал мне вывод как (2, -2 , -2)
в gcc. Я ожидал положительного результата каждый раз. Может ли модуль быть отрицательным? Может ли кто-нибудь объяснить это поведение?