Оператор по модулю изменения в C ++ 11? [Дубликат]
Возможный дубликат:
C ++ оператор% гарантирует
В С ++ 98/03
5.6-4
Двоичный / оператор дает частное, а двоичный оператор% - остаток от деления первого выражения на второе. Если второй операнд / или% равен нулю, поведение не определено; в противном случае (a / b) * b + a% b равно a.Если оба операнда неотрицательны, то остаток неотрицателен; если нет, то знак остатка определяется реализацией.
В с ++ 11:
5,6 -4
Двоичный / оператор дает частное, а двоичный оператор% - остаток от деления первого выражения на второе. Если второй операнд / или% равен нулю, поведение не определено. Для целочисленных операндов оператор / дает алгебраическое частное с любой отброшенной дробной частью; 81, если частное a / b представимо в типе результата, (a / b) * b + a% b равно a.
Как вы можете видеть, что определенный для реализации бит знака отсутствует, что с ним происходит?