C++ Operationen

Arithmetische Operationen und Zuweisungen :

C++ Python Zweck
\bgroup\color{green}$ x++$\egroup   Postincrement
\bgroup\color{green}$ ++x$\egroup   Preincrement
\bgroup\color{green}$ x--$\egroup   Postdecrement
\bgroup\color{green}$ --x$\egroup   Predecrement
\bgroup\color{green}$ -x$\egroup   Vorzeichen
\bgroup\color{green}$ x+y$\egroup \bgroup\color{green}$ x+y$\egroup Addition
\bgroup\color{green}$ x-y$\egroup \bgroup\color{green}$ x-y$\egroup Subtraktion
\bgroup\color{green}$ x*y$\egroup \bgroup\color{green}$ x*y$\egroup Multiplikation
\bgroup\color{green}$ x/y$\egroup \bgroup\color{green}$ x/y$\egroup Division
\bgroup\color{green}$ x\%y$\egroup \bgroup\color{green}$ x\%y$\egroup Modulo
\bgroup\color{green}$ pow(x,y) $\egroup \bgroup\color{green}$ x**y$\egroup Exponation
\bgroup\color{green}$ x= y $\egroup \bgroup\color{green}$ x= y $\egroup Zuweisung
\bgroup\color{green}$ x\, += \, y\, $\egroup \bgroup\color{green}$ x\, += \, y\, $\egroup Zuweisung mit Änderung
\bgroup\color{green}$(-=, *=, /=, \%=)$\egroup    


Nützliche Kurzformen:


Ergänzung für Spezialisten

Subtiler Unterschied zwischen x++ und ++x:
Preincrement bedeutet, zuerst Variable um 1 erhöhen, dann verwenden.
Postincrement umgekehrt, zuerst verwenden, dann erhöhen.

Beispiel:



       int n = 0;
       cout << n++ << endl;
       cout << n << endl;
       cout << ++n << endl;


Aber Vorsicht, manchmal compiler-abhängige Seiteneffekte !


C++ Standard Funktionen

Mathematische Funktionen, wie sin, cos, exp, sqrt, pow, etc., sind in C++ nicht direkter Bestandteil der Sprache (im Gegensatz zu FORTRAN). Sie sind aber in jedem C/C++ Compiler enthalten; die Definitionen (prototypes) müssen mittels header files geladen werden, z.B.
#include <cmath>.



Logische Operationen und Vergleiche :

C++ python Zweck
false oder \bgroup\color{green}$0$\egroup False falsch
true oder \bgroup\color{green}$\neq 0$\egroup True wahr
!x not x Negation
\bgroup\color{green}$x \&\& y$\egroup x and y AND Verknüpfung
\bgroup\color{green}$x \vert\vert y$\egroup x or y OR Verknüpfung
\bgroup\color{green}$x < y$\egroup \bgroup\color{green}$x < y$\egroup kleiner als
\bgroup\color{green}$x <= y$\egroup \bgroup\color{green}$x <= y$\egroup kleiner als oder gleich
\bgroup\color{green}$x > y$\egroup \bgroup\color{green}$x > y$\egroup größer als
\bgroup\color{green}$x >= y$\egroup \bgroup\color{green}$x >= y$\egroup größer als oder gleich
\bgroup\color{green}$x == y$\egroup \bgroup\color{green}$x == y$\egroup gleich
\bgroup\color{green}$x != y$\egroup \bgroup\color{green}$x != y$\egroup ungleich

Vorrangregeln für Operatoren: f = a*x*x + b*x + c funktioniert wie erwartet nach Mathematik (Punkt vor Strich ...). Weiteres im Prinzip eindeutig festgelegt, dennoch besser mit Klammern unmissverständlich klarmachen: x = y > z ? (x=y) > z oder x = (y>z)


Bit Operationen (für Spezialisten):

C++ Zweck
\bgroup\color{green}$\tilde{} \; x$\egroup Complement
\bgroup\color{green}$x \& y$\egroup bitwise AND
\bgroup\color{green}$x \vert y$\egroup bitwise OR
\bgroup\color{green}$x \; \hat{} \; y$\egroup bitwise XOR
\bgroup\color{green}$x << y$\egroup left shift
\bgroup\color{green}$x >> y$\egroup right shift mit sign


   cout << (2 | 1);   // = 3
   cout << (2 & 1);   // = 0
   cout << (2 & 3);   // = 2
   cout << (2 << 1);   // = 4

Mehr Beispiele später in den Übungen.

Achtung: Viele Operatoren sind mehrfach belegt, d.h. je nach context haben sie unterschiedliche Bedeutung, wie hier << left-shift oder Ausgabe. Auch bei anderen Mehrfach–Verwendung *, &, ...