2012-02-06 5 views
3

У меня есть пара линии C кода тестирования оператора по модулю следующим образом:Знак результата оператора modulo?

// line 1 
printf("%d\n", 5%(-3)); => output: 2 
// line 2 
printf("%d\n", -5%3); => output: -2 

Я знаю, что знак по модулю зависит от знака числителя, но мне интересно, почему не иначе?

+0

См. Http://stackoverflow.com/a/6385400/253056 –

+0

Возможный дубликат [Проблема использования модуля с отрицательными номерами в программе дешифрования] (http://stackoverflow.com/questions/6385352/problem-using-modulo -with-negative-numbers-in-decryption-program) –

+2

Это не вопрос проголосовать. Речь идет о том, как работает оператор modulo, и это хороший вопрос. –

ответ

0

С Перли математической точки зрения, давайте посмотрим на это следующим образом:

5/-3 = (-3 * -1) + 2 
-5/3 = (3 * -1) - 2 

Хотелось бы надеяться, что ответы на ваш вопрос.

+0

Чисто математическая точка зрения также допускает '-5/3 = (3 * -2) + 1', поэтому вы не полностью * отвечаете на вопрос, если не объясните, как '/' работает тоже. – hugomg

+2

Поведение% в C не так, как вы могли бы ожидать, с математической точки зрения. –

+0

@ missingno true, но я бы предположил, что OP имеет базовые знания математики, поскольку это имеет фундаментальное значение для программирования. –

Смежные вопросы