W programie C próbowałem poniższych operacji (aby sprawdzić zachowanie)
x = 5 % (-3);
y = (-5) % (3);
z = (-5) % (-3);
printf("%d ,%d ,%d", x, y, z);
dał mi wyjście jak (2, -2 , -2)
w gcc. Za każdym razem spodziewałem się pozytywnego wyniku. Czy moduł może być ujemny? Czy ktoś może wyjaśnić to zachowanie?