Heim > Backend-Entwicklung > C++ > Wie können wir negative Zahlen bei der Array-Indizierung richtig verarbeiten?

Wie können wir negative Zahlen bei der Array-Indizierung richtig verarbeiten?

Linda Hamilton
Freigeben: 2025-01-13 13:37:44
Original
857 Leute haben es durchsucht

How Can We Correctly Handle Negative Numbers in Array Indexing?

Verarbeitung negativer Zahlen im Array-Index

Bei der Programmierung müssen wir häufig Indizes verwenden, um auf Array-Elemente zuzugreifen. Während der Modulo-Operator bei der Arbeit mit positiven Zahlen gut funktioniert, können negative Zahlen aufgrund unterschiedlicher Handhabung Probleme bereiten.

Verständnis der modularen Arithmetik

Der Modulo-Operator (%) wird verwendet, um den Rest der Division des ersten Operanden durch den zweiten Operanden zu ermitteln. Zum Beispiel:

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

Der Modulo-Operator verhält sich jedoch anders, wenn er mit negativen Zahlen umgeht:

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

Diese Abweichung vom erwarteten Verhalten ist auf die zugrunde liegende Implementierung des Modulo-Operators zurückzuführen, der darauf ausgelegt ist, einen nicht negativen Rest zu erzeugen.

Verwenden Sie negative Zahlen für die Array-Indizierung

Um diese Inkonsistenz zu beheben und eine korrekte Array-Indizierung sicherzustellen, benötigen wir eine benutzerdefinierte Modulo-Funktion. Eine Möglichkeit, dies zu erreichen, ist wie folgt:

<code class="language-c++">int mod(int x, int m) {
    return (x%m + m)%m;
}</code>
Nach dem Login kopieren

Diese Funktion berechnet zunächst den Rest und addiert dann die Array-Länge, wenn der Rest negativ ist. Dadurch wird sichergestellt, dass auch bei negativen Werten der gewünschte Index im Array zurückgegeben wird.

Eine weitere Möglichkeit, die Anzahl der modularen Operationen zu optimieren, ist:

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

Diese Version verwendet bedingte Anweisungen anstelle zusätzlicher Modulo-Operationen, um das gleiche Ergebnis zu erzielen.

Durch die Verwendung dieser benutzerdefinierten Modulo-Funktionen können Sie negative Zahlen in Array-Indizes effizient verarbeiten und so sicherstellen, dass Sie die gewünschten Ergebnisse erhalten.

Beispielimplementierung

Mithilfe einer benutzerdefinierten Modulo-Funktion zeigt das folgende Codefragment, wie ein Array mit negativen Zahlen korrekt indiziert wird:

<code class="language-c++">int GetArrayIndex(int i, int arrayLength) {
    return mod(i, arrayLength);
}

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

Mit diesem verbesserten Verständnis und der benutzerdefinierten Modulo-Funktion stellen negative Zahlen keine Gefahr mehr für die genaue Array-Indizierung dar.

Das obige ist der detaillierte Inhalt vonWie können wir negative Zahlen bei der Array-Indizierung richtig verarbeiten?. 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