¿Cuáles son las reglas para la aritmética modular en C?
En clases anteriores, me enseñaron quen % d = r
y pensarlo comon = d*q + r
, dónded
es el divisor,q
es el cociente, yr
es el resto (notando que el resto nunca puede ser negativo).
Así, por ejemplo,-111 mod 11
es10
, porque-111 = -11*-11 + 10
(Opuesto a-111 = -11*10 -1
, viendo como eso nos daría un resto negativo).
Sin embargo, al imprimir los resultados de-111 % 11
, -1
es el resultado y no10
. ¿Por qué? ¿No es esto técnicamente incorrecto?