Heim >Backend-Entwicklung >C++ >Wie geht der Modulo-Operator mit negativen Zahlen um?

Wie geht der Modulo-Operator mit negativen Zahlen um?

Linda Hamilton
Linda HamiltonOriginal
2024-12-23 03:10:13612Durchsuche

How Does the Modulo Operator Handle Negative Numbers?

Das Verhalten des Modulo-Operators bei negativen Werten verstehen

Der Modulo-Operator liefert bekanntermaßen unterschiedliche Ergebnisse, wenn er mit negativen Operanden verwendet wird. Um dies zu vertiefen, betrachten wir die folgenden Vorgänge:

std::cout << (-7 % 3) << std::endl; // Output: -1
std::cout << (7 % -3) << std::endl; // Output: 1

Begründung gemäß ISO-Standard

Gemäß ISO14882:2011(e) 5.6-4, Der Modulo-Operator (%) ergibt den Rest der Division des ersten Ausdrucks durch den zweiten. Bei ganzzahligen Operanden wie in unserem Fall führt der Divisionsoperator (/) jedoch eine ganzzahlige Division durch und verwirft alle Bruchteile.

Mathematische Aufschlüsselung

Lassen Sie uns die Berechnungen aufschlüsseln Zur Verdeutlichung:

  • (-7 / 3) ergibt -2 und (-2 * 3) ist -6. Daher ergibt -7 % 3 -1, da (-6 - (-7)) = -1.
  • (7 / -3) ergibt -2 und (-2 * -3) ist 6. Somit ergibt 7 % -3 1, da (6 - 7) = 1.

Implementierungsdefiniert Verhalten

Es ist wichtig zu beachten, dass das Vorzeichen des Rests durch die Implementierung definiert wird, wenn beide Operanden negativ sind. Ab ISO14882:2011(e) wird das Verhalten jedoch nicht mehr explizit angegeben wie im Vorgänger ISO14882:2003(e).

Das obige ist der detaillierte Inhalt vonWie geht der Modulo-Operator mit negativen Zahlen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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