Jakie są zasady arytmetyki modułowej w C?
We wcześniejszych klasach tego mnie uczonon % d = r
i myśleć o tym jakn = d*q + r
, gdzied
jest dzielnikiem,q
jest ilorazem ir
jest resztą (zauważając, że reszta nigdy nie może być ujemna).
Na przykład-111 mod 11
jest10
, bo-111 = -11*-11 + 10
(w przeciwieństwie do-111 = -11*10 -1
, widząc jak to dałoby nam negatywną resztę).
Jednak podczas drukowania wyników-111 % 11
, -1
jest wynikiem, a nie10
. Czemu? Czy to nie jest technicznie złe?