Heim > Backend-Entwicklung > C++ > Wie implementiert man eine benutzerdefinierte Modulo-Funktion für negative Zahlen in C/C/Obj-C?

Wie implementiert man eine benutzerdefinierte Modulo-Funktion für negative Zahlen in C/C/Obj-C?

Mary-Kate Olsen
Freigeben: 2024-11-04 03:13:02
Original
580 Leute haben es durchsucht

How to Implement a Custom Modulo Function for Negative Numbers in C/C  /Obj-C?

Modulo-Operator, der negative Zahlen in C/C/Obj-C verarbeitet

Der Modulo-Operator (%) in C-basierten Sprachen, Wenn es auf negative Zahlen angewendet wird, verhält es sich nicht immer intuitiv. Insbesondere kann das Ergebnis auch bei positiven Teilern negativ sein. Dieses Verhalten kann insbesondere für Mathematiker frustrierend sein.

Benutzerdefinierte Modulo-Funktion

Um dieses Problem zu beheben, kann eine benutzerdefinierte Modulo-Funktion implementiert werden, die negative Zahlen korrekt verarbeitet. Die folgende Funktion nutzt das durch die Implementierung definierte Verhalten des Modulo-Operators, um sicherzustellen, dass das Ergebnis immer positiv ist:

int mod(int a, int b) {
    if (b < 0) {
        return -mod(-a, -b);
    }

    int ret = a % b;
    if (ret < 0) {
        ret += b;
    }

    return ret;
}
Nach dem Login kopieren

Diese Funktion prüft zunächst, ob der Divisor negativ ist. Wenn dies der Fall ist, ruft sich die Funktion rekursiv mit der Negation von Dividend und Divisor auf. Dadurch wird sichergestellt, dass das Ergebnis positiv ist.

Als nächstes berechnet die Funktion den Rest der Division mithilfe des Modulo-Operators. Wenn der Rest negativ ist, addiert die Funktion den Divisor zum Rest, um ihn positiv zu machen.

Schließlich gibt die Funktion das Ergebnis zurück.

Verwendung

Die Funktion mod() kann anstelle des Modulo-Operators verwendet werden, um das gewünschte Verhalten für negative Zahlen zu erhalten. Zum Beispiel:

int result = mod(-1, 8); // result is 7
result = mod(13, -8); // result is -3
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie implementiert man eine benutzerdefinierte Modulo-Funktion für negative Zahlen in C/C/Obj-C?. 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