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!