Modulo-Operator %
Der Modulo-Operator führt eine Restwert-Division zweier Elemente aus. Dieser Operator ist nur für Integer-Typen zulässig und entspricht der Berechnung des Restwertes einer Division.
Details
Der Modulo-Operator erwartet zwei Operanden als rvalues und wird von links nach rechts abgearbeitet. Der Rückgabewert ist ein rvalue und stets ein Integer-Typ.
Der Operator ist zulässig für Integer-Typen sowie den bool
-Typ. Boolsche Werte werden als Integer-Werte aufgefasst. Der Modulo-Operator ist für Fliesskomma-Typen nicht zulässig. Der Compiler meldet einen Fehler wie invalid operands to binary %.
Die Modulo-Berechnung ergibt in C grundsätzlich nur mit positiven Werten sinnvolle Ergebnisse. Wenn der zweite Operand negativ ist, so wird dieses Vorzeichen von C schlichtweg ignoriert. Wenn der erste Operand negativ ist, so wird die Berechnung ausgeführt, als ob der Operand positiv wäre und schlussendlich dem Resultat das Vorzeichen wieder angehängt.
Um somit auch mit negativen Werten korrekte Resultate zu erhalten, ist eine Addition des Modulo-Operanden mit anschliessender erneuter Modulo-Operation notwendig. Dies funktioniert auch mit positiven Werten.