| Operator | Bezeichnung | Beschreibung | Anwendung |
|---|---|---|---|
| + | positives Vorzeichen | kann weggelassen werden, nur sinnvoll um explizit auf das Vorzeichen hinzuweisen | int a = +1; |
| - | negatives Vorzeichen | kehrt das Vorzeichen um | int a = -1; int b = -a; (b wird zu +1) |
| + | Addition | addiert zwei Operanden miteinander | int a; int b; int c = a + b; |
| - | Subtraktion | subtrahiert den rechten Operanden vom linken | int a; int b; int c = a - b |
| * | Multiplikation | multipliziert zwei Operanden miteinander | int a; int b; int c = a * b; |
| / | Division | dividiert den linken Operanden durch den rechten, ein eventueller Rest fällt weg | int a; int b; int c = a / b; |
| % | Modulo | gibt den Rest einer Division aus | int a = 10; int b = 3; int c = a % b; (c wird zu 1) |
| ++ | Inkrement (als Präfix-Inkrement oder Postfix-Inkrement anwendbar) | erhöht den Wert des Operanden um 1 (Postfix-Inkremente haben eine höhere Priorität als Präfix-Inkremente) | Postfix int a = 1; int b = a++; Präfix int a ; int b = ++a; (b wird zu a+1) |
| -- | Dekrement (als Präfix-Dekrement oder Postfix-Dekrement anwendbar) | verringert den Wert des Operanden um 1 (Postfix-Dekremente haben eine höhere Priorität als Präfix-Dekremente) | Postfix int a; int b = a--; Präfix int a = 1; int b = --a; (b wird zu a-1) |
| = | Zuweisung | weist dem linken Operanden den Wert des rechten zu | int a = 1; |
| +=, -=, *=, /=, %=, &=, <<=, >>=, ^=, |= | kombinierte Zuweisungsoperatoren | der linke Operator wird sowohl als linker Operator für die Zuweisung als auch für den rechten Operator verwendet | a += b (bedeutet a = a + b) |
| == | Gleichheit | vergleicht zwei Operanden miteinander, wenn beide gleich sind wird der boolsche Wert true, anderenfalls false zurückgegeben | a == b |
| != | Ungleichheit | vergleicht zwei Operanden miteinander, wenn beide ungleich sind wird der boolsche Wert true, anderenfalls false zurückgegeben | a != b |
| <= | kleiner oder gleich | vergleicht zwei Operanden miteinander, wenn der linke Operand kleiner oder gleich dem rechten ist wird der boolsche Wert true, anderenfalls false zurückgegeben | a <= b |
| >= | größer oder gleich | vergleicht zwei Operanden miteinander, wenn der linke Operand größer oder gleich dem rechten ist wird der boolsche Wert true, anderenfalls false zurückgegeben | a >= b |
| < | kleiner | vergleicht zwei Operanden miteinander, wenn der linke Operand kleiner als der rechte ist wird der boolsche Wert true, anderenfalls false zurückgegeben | a < b |
| > | größer | vergleicht zwei Operanden miteinander, wenn der linke Operand größer als der rechte ist wird der boolsche Wert true, anderenfalls false zurückgegeben | a > b |
| && | logisches UND | Verknüpft die beiden Operanden und gibt true zurück, wenn beide Operanden den Wert true besitzen, ansonsten false | a && b |
| || | logisches ODER | Verknüpft die beiden Operanden und gibt true zurück, wenn einer der Operanden den Wert true besitzt, ansonsten false | a || b |
| ! | logisches NICHT | aus true wird false, aus false wird true | !a |
| & | bitweises UND | Verknüpft jedes Bit beider Operanden | int a; int b; int c = a & b; |
| | | bitweises ODER | Verknüpft jedes Bit beider Operanden | int a; int b; int c = a | b; |
| ^ | bitweises exklusives ODER | Verknüpft jedes Bit beider Operanden | int a; int b; int c = a ^ b; |
| ~ | bitweises NICHT | Negiert den Wert jedes Bits | int a; int b = ~a; |
| << | Linksverschiebung | Verschiebt die Bits des linken Operanden um die durch den rechten Operanden angegebene Anzahl von Stellen nach links und füllt die Stellen rechts mit Nullen | int a; int b; int c = a << b; |
| >> | Rechtsverschiebung | Verschiebt die Bits des linken Operanden um die durch den rechten Operanden angegebene Anzahl von Stellen nach rechts, die nach rechts verschobenen Bits fallen weg | int a; int b; int c = a >> b; |
| * | Zeigerdereferenzierung | Verhindert das Zugreifen auf die Adresse eines Zeigers, sodass nur auf den Speicherbereich zugegriffen wird | int a = 5; int* b = &a;*b = c; |
| . | Elementzugriff | Greift auf einen Member eines Objekts zu | objekt.member = a; |
| -> | Zugriff auf Member über Zeiger | Dereferenziert einen Zeiger auf ein Objekt, der durch den linken Operanden angegeben wird, und greift auf den durch den rechten Operanden angegebenen Member zu | obj_zeiger->member = a; |
| :: | Qualifizierung | Qualifizierung einer Variable, Funktion oder Klasse mit ihrem übergeordneten Element (z.B. Namespace) | string a; std::cin >> a; |
| .* | Zugriff auf und gleichzeitige Dereferenzierung eines Members | Zugriff auf und gleichzeitige Dereferenzierung eines Zeiger-Members eines Objekts | objekt.*z_member = a; |
| ->* | Zugriff auf und gleichzeitige Dereferenzierung eines Members über einen Zeiger | Zugriff auf, und gleichzeitige Dereferenzierung eines Zeiger-Member eines Objekt-Zeigers | obj_z->*z_member = a; |
| & | Adressoperator | ermittelt die Adresse eines Operanden | int a = 1; int* zeiger = &a; |
| sizeof | Speichergröße | ermittelt den Speicherbedarf eines Datentyps bzw. eines Operanden | int a = sizeof(int); int b = sizeof a; |
| new | Objekterstellung | erstellt ein Objekt vom angegebenen Typ und gibt einen Zeiger darauf zurück | Object * p = new Object(parameter); |
| new[] | Objekt-Array-Erstellung | erstellt ein neues Objekt-Array | Object * object_array = new Object[12]; |
| delete | Objektzerstörung | zerstört das gewünschte Objekt | Object * a = new Object; delete a; |
| delete[] | Objekt-Array-Zerstörung | Zerstört die Objekte im gewünschten Array | delete[] object_array; |
| () | Funktionsaufruf | ruft eine Funktion auf | function() |
| , | Komma Operator (Aufzählung) | Dient als Trennzeichen bei Initialisierungen, etc. | int a, b, c; |
| * | Zeigerdeklaration | erstellt einen Zeiger auf einen bestimmten Datentypen | int* zeiger; |
| ?: | Bedingungsoperator | Ersatz für ein if-else Konstrukt, wenn die Bedingung in der Klammer zutrifft wird der erste Operand ausgeführt, wenn nicht der zweite | int a = (b>c) ? a : b; |
| [] | Indizierung | greift auf ein bestimmtes Element im Array zu | array[a] = 1; |
| (typ) | Typumwandlung: explizites Casting in C | Wandelt den Datentyp einer Variable in den gewünschten Datentyp um. Sollte jedoch in C++ so nicht verwendet werden, da Fehler auftreten können | float a = 1.2; int b = (int)a; |
| static_cast | Typumwandlung in C++ | Wandelt den Datentyp einer Variable in den gewünschten Datentyp um | float a = 1.2; int b = static_cast<int>(a); |
| const_cast | const_cast Operator | Entfernen der Konstanz von einem Datentyp, sodass ein Schreibzugriff ermöglicht wird | const int a = 10; const int b = const_cast |
| reinterpret_cast | reinterpret_cast Operator | sehr mächtiger Cast, mit dem man z.B. Zeiger in Datentypen umwandeln kann | int a = 1; float *b = reinterpret_cast<float*>(a); |
| typeid | typeid Operator | liefert während der Laufzeit Informationen über eine Variable, eine Referenz, einen (dereferenzierten) Zeiger oder eine Klasse | #include <typeinfo> class Base {/*...*/}; class Derived : public Base {/*...*/} Derived dobj; Base &bref = dobj; if (typeid(bref) == typeid(Derived)) { std::cout << "bref referenziert Derived" << std::endl;} |
Sonntag, 20. Mai 2012
Operatoren in C++
Abonnieren
Kommentare zum Post (Atom)
Keine Kommentare:
Kommentar veröffentlichen