Poniżej znajduje się some code in C++. Jeśli spróbujesz coś takiego, jak -2%5
w pythonie, wynik będzie dodatni 3, podczas gdy wiele innych języków, takich jak C++ C# (code) i flash da -2Jak działa modulus i dlaczego jest inny w Pythonie niż w większości języków?
Dlaczego dają -2 i czy jedna wersja jest bardziej poprawna od drugiej?
#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);
}
wyjściowa:
2
-2
-2
2
-2
Jest wdrożenie zdefiniowane w C++ 98 (i C-90). Jest dobrze zdefiniowany w C++ 11 (i C-99): Znak wyniku operatora modulus jest taki sam jak znak dywidendy. W języku Python wynik ma taki sam znak jak dzielnik. Który sposób interpretowania rzeczy to trochę rzut monetą.Dla mnie najbardziej sensowne są języki, które zapewniają obydwie implementacje, więc jako programista mogę wybrać ten, który ma więcej sensu w konkretnym kontekście. –