Heim > Backend-Entwicklung > C++ > Wie gehe ich mit negativen Modulo-Operationen richtig um?

Wie gehe ich mit negativen Modulo-Operationen richtig um?

Susan Sarandon
Freigeben: 2025-01-13 13:22:43
Original
598 Leute haben es durchsucht

How Do I Handle Negative Modulo Operations Correctly?

Die Herausforderungen des negativen Modulo meistern

Der Modulo-Operator (%) kann beim Umgang mit negativen Zahlen schwierig sein. Während es den Rest für positive ganze Zahlen reibungslos zurückgibt, führt sein Verhalten bei negativen Zahlen oft zu Verwirrung. Dieser Operator liefert den Rest nach der Division.

Das Problem mit negativem Modulo

Betrachten Sie ein Array mit einer Länge von 3:

<code>i % 3 =
4 -> 1
3 -> 0
2 -> 2
1 -> 1
0 -> 0
-1 -> -1
-2 -> -2
-3 -> 0
-4 -> -1</code>
Nach dem Login kopieren

Beachten Sie, dass negative Reste negativ bleiben, im Gegensatz zu ihren positiven Gegenstücken, die den positiven Bereich durchlaufen.

Eine Lösung für negatives Modulo

Um sicherzustellen, dass sich negative Zahlen wie erwartet verhalten (Umbruch), ist eine benutzerdefinierte Funktion erforderlich:

<code class="language-c++">int GetArrayIndex(int i, int arrayLength) {
    int r = i % arrayLength;
    return (r < 0) ? (r + arrayLength) : r;
}</code>
Nach dem Login kopieren

Wie es funktioniert

Diese Funktion fügt geschickt arrayLength zum Rest (r) hinzu, nur wenn r negativ ist. Dadurch wird der negative Rest in den positiven Bereich „umhüllt“ und das gewünschte Modulo-Verhalten nachgeahmt.

Praktische Anwendung

Testen wir die Funktion mit unserem 3-Elemente-Array:

GetArrayIndex( 4, 3) -> 1 GetArrayIndex( 3, 3) -> 0 GetArrayIndex( 2, 3) -> 2 GetArrayIndex( 1, 3) -> 1 GetArrayIndex( 0, 3) -> 0 GetArrayIndex(-1, 3) -> 2 GetArrayIndex(-2, 3) -> 1 GetArrayIndex(-3, 3) -> 0 GetArrayIndex(-4, 3) -> 2

Diese benutzerdefinierte Funktion verarbeitet negative Modulo-Operationen effektiv und liefert konsistente und vorhersehbare Ergebnisse. Jetzt können Sie sicher mit negativem Modulo arbeiten, ohne auf unerwartetes Verhalten zu stoßen.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit negativen Modulo-Operationen richtig um?. 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