O sinal de uma expressão de módulo

Em matemática, o resto da divisão euclidiana é sempre positivo, independentemente do sinal do dividendo ou do divisor. No entanto, este não é o caso da programação.

Em python, o sinal do resto é sempre o sinal do divisor:

print   7 % 3          # 1
print 7 % -3 # -2
print -7 % 3 # 2
print -7 % -3 # -1

Em C ++, até C ++ 11 depende da implementação. Por exemplo, no clang ++ 4.2, o sinal do resto é o sinal do dividendo.

std::cout <<   7 % 3   << std::endl;          //1
std
::cout << 7 % -3 << std::endl; //1
std
::cout << -7 % 3 << std::endl; //-1
std
::cout << -7 % -3 << std::endl; //-1

C ++ 11 define o restante como sempre positivo, seguindo sua definição matemática.