Heim > Backend-Entwicklung > C++ > Warum erzeugt der Modulo-Operator negative Ergebnisse mit negativen Zahlen?

Warum erzeugt der Modulo-Operator negative Ergebnisse mit negativen Zahlen?

Barbara Streisand
Freigeben: 2024-12-17 09:55:25
Original
274 Leute haben es durchsucht

Why Does the Modulo Operator Produce Negative Results with Negative Numbers?

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
Nach dem Login kopieren

(-7 % 3) = -1

  • -7 dividiert durch 3 ergibt einen algebraischen Quotienten von -2.
  • -2 multipliziert mit 3 ergibt -6.
  • Der Rest von -7 dividiert durch 3 ist daher -1.

( 7 % -3) = 1

  • 7 dividiert durch -3 ergibt einen algebraischen Quotienten von -2.
  • -2 multipliziert mit -3 ergibt 6.
  • Der Rest von 7 geteilt durch -3 ist daher 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage