Gleich-Operator ==
Der Gleichheits-Operator führt einen Vergleich zweier Operanden aus. Wenn beide Operanden gleich sind, so gibt der Operator den boolschen Wert true
zurück, ansonsten false
. In C wird anstelle von true
der Wert 1
und anstelle von false
der Wert 0
zurückgegeben. Der Gleichheits-Operator wird sehr häufig für Bedingungen in Kontrollstrukturen verwendet.
Details
Der Gleichheits-Operator erwartet zwei Operanden als rvalues und wird von links nach rechts abgearbeitet. Der Rückgabewert ist ein rvalue, in C ein Integer-Typ, in C++ ein boolscher Typ.
Der Operator ist zulässig für arithmetische (Integer- und Fliesskomma-) Typen, boolsche Typen sowie Pointer. Handelt es sich bei den Typen der beiden Operanden um Pointer-Typen, so wird nach den Regeln der Pointer-Arithmetik vorgegangen. Handelt es sich bei den Typen der beiden Operanden um arithmetische Typen, so wird gegebenfalls eine automatische arithmetische Umwandlung vorgenommen. Entsprechen die Typen keinen der genannten Typen, so wird ein implizites Casting vorgenommen, welches gegebenfalls zu Compiler-Fehlern oder Warnungen führen kann. Warnungen sowohl von der Pointer-Arithmetik, der arithmetischen Umwandlung, als auch von impliziten Castings können mittels explizitem Casting unterdrückt werden.
Umsteiger von anderen Sprachen auf C oder C++ seien gewarnt, dass der Gleichheits-Operator in C zwei Gleichheitszeichen ==
hat und nicht eines. Beim Operator mit einem Gleichheitszeichen =
handelt es sich um den Zuweisungsoperator, der in jedem Fall einen Wert zuweist, und ihn nicht vergleicht. Solche Fehler passieren bei Neueinsteiger häufig:
Korrekt wäre folgendes: