In a C program I was trying the below operations (Just to check the behavior)
x = 5 % (-3);
y = (-5) % (3);
z = (-5) % (-3);
printf("%d ,%d ,%d", x, y, z);
It gave me output as (2, -2 , -2)
in gcc. I was expecting a positive result every time. Can a modulus be negative? Can anybody explain this behavior?