Komischer Operator in Library

Hallo zusammen,

gerade ist mir in einer Bibliothek folgender Operator aufgefallen: ^=
Was macht dieser? Konkret geht es um eine Checksummenberechnung:

int i2;
for(int i=0; i<5; i++)
{
i2 = 2*i;
checksum ^= hex2dec(id.substring(i2,i2+2);
}

Grüße,
K86

Kelevra86:
gerade ist mir in einer Bibliothek folgender Operator aufgefallen: ^=
Was macht dieser?

Die Operator-Gleich Schreibweise bedeutet einfach, dass der Operator mit dem rechts vom Gleichheitszeichen stehenden Ausdruck auf die links vom Gleichheitszeichen stehende Variable angewendet wird.

Beispiele:
checksum +=2;
ist gleichbedeutend mit
checksum =checksum+2;

checksum -=2;
ist gleichbedeutend mit
checksum =checksum-2;

checksum /=2;
ist gleichbedeutend mit
checksum =checksum/2;

checksum =2;
ist gleichbedeutend mit
checksum =checksum
2;

und demzufolge ist

checksum ^= hex2dec(id.substring(i2,i2+2);
gleichbedeutend mit
checksum = checksum ^ hex2dec(id.substring(i2,i2+2);

Wobei in letzterem Fall natürlich beide Schreibweisen gleich fehlerhaft sind und zu einem Compilerfehler führen, weil die Anzahl der öffnenden und schließenden Klammern im Ausdruck nicht gleich ist (2* Klammer auf, aber nur 1* Klammer zu).

^ steht für "hoch", also 2^3 gesprochen "2 hoch 3"

Das ist falsch.

Der Operator ^ ist ein XOR (exklusiv oder) auf Bitebene.

Stimmt, es geht ja um C++ und nicht um den Google-Taschenrechner, da war ich wohl gedanklich bei der falschen Operation.

Sehr gut. Vielen Dank.