Sonntag, 20. Mai 2012

Operatoren in C++

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(&a);
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;
}

Keine Kommentare:

Kommentar veröffentlichen