Heim >Backend-Entwicklung >C++ >Warum erzeugt der Modulo-Operator negative Ergebnisse mit negativen Zahlen?
Modulo-Operator führt zu negativen Werten: Eine mathematische Erklärung
Der Modulo-Operator %, wenn er auf negative Zahlen angewendet wird, kann je nach Ergebnis unterschiedliche Ergebnisse liefern über die Umsetzung. Das kann rätselhaft sein, aber das Verständnis der mathematischen Definition des Modulo-Operators kann Aufschluss über dieses Verhalten geben.
Gemäß ISO14882:2011(e) 5.6-4 gibt der Modulo-Operator den Rest der Division von zurück ersten Ausdruck durch den zweiten. Wenn der zweite Operand Null ist, ist das Verhalten undefiniert. Für ganzzahlige Operanden ist der Quotient der algebraische Quotient, wobei alle Bruchteile weggelassen werden.
Um dies zu veranschaulichen, betrachten Sie die folgenden Beispiele:
std::cout << (-7 % 3) << std::endl; // -1 std::cout << (7 % -3) << std::endl; // 1
(-7 % 3) = -1
( 7 % -3) = 1
Beachten Sie, dass in beiden In einigen Fällen ist der algebraische Quotient derselbe (-2). Der Unterschied im Rest ergibt sich aus dem durch die Implementierung definierten Vorzeichen des Rests, wenn beide Operanden unterschiedliche Vorzeichen haben.
Das obige ist der detaillierte Inhalt vonWarum erzeugt der Modulo-Operator negative Ergebnisse mit negativen Zahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!