Heim > Backend-Entwicklung > C++ > Warum liefert der Modulo-Operator (%) unterschiedliche Ergebnisse mit negativen Zahlen?

Warum liefert der Modulo-Operator (%) unterschiedliche Ergebnisse mit negativen Zahlen?

Mary-Kate Olsen
Freigeben: 2024-12-30 18:15:11
Original
791 Leute haben es durchsucht

Why Does the Modulo Operator (%) Produce Different Results with Negative Numbers?

Negative Restwerte in der Modulo-Operation

Bei der Durchführung von Modulo-Operationen, bei denen ein Operand negativ ist, können unerwartete Ergebnisse auftreten. In diesem Artikel wird untersucht, warum Operationen wie (-7 % 3) und (7 % -3) scheinbar inkonsistente Ergebnisse von -1 bzw. 1 erzeugen.

Gemäß der Norm ISO14882:2011 ist der Modulo-Operator (% ) liefert den Rest nach der Division des ersten Operanden durch den zweiten. Während bei der Division ganzer Zahlen im Allgemeinen der Bruchteil verworfen wird, berücksichtigt der Modulo-Operator auch die Vorzeichen der Operanden.

Im Fall von (-7 % 3) ist das Ergebnis von -7 / 3 -2. Die Multiplikation von -2 mit 3 ergibt -6, was bedeutet, dass der Rest -1 ist. Daher ist (-7 % 3) = -1.

In ähnlicher Weise ergibt 7 / -3 für (7 % -3) -2. Die Multiplikation von -2 mit -3 ergibt 6 und ergibt den Rest 1. Somit ist (7 % -3) = 1.

Es ist wichtig zu beachten, dass die Modulo-Operation ein durch die Implementierung definiertes Verhalten zeigt, wenn das Ergebnis negativ ist . Während einige Implementierungen möglicherweise das negative Vorzeichen beibehalten, wird dies in der Norm ISO14882:2011 nicht mehr erzwungen. Daher ist das negative Vorzeichen (-7 % 3) systemabhängig.

Das obige ist der detaillierte Inhalt vonWarum liefert der Modulo-Operator (%) unterschiedliche 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