Modulo-Zuweisungs-Operator %=

Der Modulo-Zuweisungs-Operator führt eine Restwert-Division aus, indem der Wert der links des Operator stehenden Variablen durch den rechts des Operators stehenden Wert geteilt wird. Das Resultat wird zurück in die Variable gespeichert.






3
#include <stdio.h>

int main(){
  int a = 15;
  a %= 4;
  printf("%d\n", a);
}

Details

Der Modulo-Zuweisungs-Operator erwartet links einen lvalue und rechts einen rvalue und wird von rechts nach links abgearbeitet. Der Rückgabewert ist in C ein rvalue: Der Wert des linken Operanden nach der Zuweisung. in C++ ist der Rückgabewert ein lvalue: Der (mittlerweile zugewiesene) linke Operand selbst.

Der Modulo-Zuweisungs-Operator verhält sich genau gleich wie der Zuweisungsoperator, nur dass er eine zusätzliche Modulo-Berechnung ausführt. Für Details über die Eigenschaften einer Modulo-Zuweisung wird hier somit auf die Beschreibung des Zuweisungsoperators und des Modulo-Operators verwiesen. Als zusätzliche Erläuterung des Modulo-Zuweisungs-Operators im Bezug zum einfachen Zuweisungsoperator genügen folgende zwei Programmzeilen, welche absolut äquivalent sind:

a %=      4;
a  = a % (4);

Die gesetzten runden Klammern deuten an, dass aufgrund der Operatoren-Rangordnung bei der Modulo-Zuweisung genauso wie bei allen Zuweisungs-Operatoren der komplette rechte Teil nach den Gleichheitszeichen als EIN Operand ausgewertet wird.