A continuación se some code in C++. Si intenta algo así como -2%5
en python el resultado es positivo 3, mientras que muchos otros lenguajes como C++ C# (code) y flash dan -2¿Cómo funciona el módulo y por qué es diferente en Python que la mayoría de las lenguas?
¿Por qué dan -2 y es una versión más correcto que el otro?
#include <cstdio>
int main(){
printf("%d\n", 2%5);
printf("%d\n", -2%5);
printf("%d\n", -2%77);
printf("%d\n", 2%-77);
printf("%d\n", -2%-77);
}
Salida:
2
-2
-2
2
-2
Se define la implementación en C++ 98 (C-90). Está bien definido en C++ 11 (y C-99): el signo del resultado del operador de módulo es el mismo que el signo del dividendo. En Python, el resultado tiene el mismo signo que el divisor. Qué manera de interpretar las cosas es como tirar una moneda.Lo que tiene más sentido para mí son los lenguajes que proporcionan ambas implementaciones, así que como programador puedo elegir el que tenga más sentido en un contexto particular. –