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