Grundlagen der Informatik 2. Operatoren

Ausdrücke und Operatoren Referenzen Typumwandlungen Vorrangregeln Kommentare

Grundlagen der Informatik (Alex Rempel)

1

Grundlagen der Informatik Ausdrücke und Operatoren ●

Ausdruck (z.B. "x = 34 + y;") ●



Folge von Operatoren und Operanden

Operatoren ●

Arithmetische Operatoren



Vergleichsoperatoren



Logische Operatoren



Bitoperatoren



Sonstige Grundlagen der Informatik (Alex Rempel)

2

Grundlagen der Informatik Ausdrücke und Operatoren ●

Arithmetische Operatoren ●

Erzeugen aus 2 (binary) oder 1 (unary) numerischen Operanden 1 numerischen Wert



Addition

+

binary

3 + 8 = 11

(Überschreitung Wertebereich)



Subtraktion

-

binary

3 – 8 = -5

(Überschreitung Wertebereich)



Multiplikation

*

binary

3 * 8 = 24

(Überschreitung Wertebereich)



Division

/

binary

8/3=2

(Nulldivision Laufzeitfehler)



Modulo (Rest)

%

binary

3%8=3

(Überschreitung Wertebereich)



Negation

-

unary

-(3) = -3

(Überschreitung Wertebereich)



Inkrement

++

unary

++3 = 4

(Überschreitung Wertebereich)



Dekrement

--

unary

--3 = 2

(Überschreitung Wertebereich)

Grundlagen der Informatik (Alex Rempel)

3

Grundlagen der Informatik Ausdrücke und Operatoren ●

Arithmetische Operatoren ●

Inkrement/Dekrement Richtung –

'++x'

erhöhen dann zuweisen



'x++'

zuweisen dann erhöhen



Beispiele: ●

'x = 3; y = ++x;'

x(4) y(4)



'x = 3; y = x++;'

x(4) y(3)



'x = 3; y = --x;'

x(2) y(2)



'x = 3; y = x--;'

x(2) y(3)

Grundlagen der Informatik (Alex Rempel)

4

Grundlagen der Informatik Ausdrücke und Operatoren ●

Vergleichsoperatoren ●

Erzeugen aus 2 (binary) Operanden 1 Wahrheitswert



Gleich

==

3.0 == 3



Ungleich

!=

3.1 != 3



Größer

>

3.1 > 3



GrößerGleich >=

3 >= 3



Kleiner

3 < 3.1



KleinerGleich 1 = 0010

Shift links/rechts um 1 ist dasselbe wie mal/durch die Basis 2 Grundlagen der Informatik (Alex Rempel)

7

Grundlagen der Informatik Ausdrücke und Operatoren ●

Sonstige Operatoren ●

Zuweisungsoperator '=' –



Verwechslungsgefahr mit '=='

sizeof Operator (unary) –

Ergibt die Anzahl erforderlicher Bytes für den Operanden ●

sizeof(14) == sizeof(int) == 4



sizeof('A') == 1



sizeof("A") == 2



sizeof(dNumber) = 8

...in Wirklichkeit liegt [A][\0] im Speicher...

"double dNumber;" muss zuvor deklariert worden sein sizeof(3.4f) = 4 –





Weitere Operatoren (werden in späteren Kapiteln ergründet) –

Referenzierung (*) und Dereferenzierung (->) Grundlagen der Informatik (Alex Rempel)

8

Grundlagen der Informatik Referenzen ●

Referenzen ●

Verweis bzw. Alias auf ein bestehendes Objekt



Erstellung: –



Typ & Name

Muss immer bei Deklaration initialisiert werden!

Beispiel: ●

int iStudents = 4;



int& iStudentsRef = iStudents;



'iStudentsRef' ist nun ein Alias für 'iStudents' und kann genauso verwendet werden



Beide Variablen verweisen auf denselben Speicher Grundlagen der Informatik (Alex Rempel)

9

Grundlagen der Informatik Typumwandlung ●

Typumwandlung ●

Bei unterschiedlichen Operandtypen in einem Ausdruck wird der Typ implizit umgewandelt: –

'char' wird zu 'int'



logische Resultate werden zu 0 (false) und 1 (true)



arithmetisch: schwächerer Typ wird zum stärkeren Typ ●



z.B. wird 'int' zu 'float' und 'float' wird zu 'double'

bei Zuweisungen wird der R Typ zu L Typ gewandelt ●

d.h. bei 'a = b' wird der Typ von b zu dem Typ von a Grundlagen der Informatik (Alex Rempel)

10

Grundlagen der Informatik Typumwandlung ●

Explizite Typumwandlung: cast Operator '(type)' ●

Explizite Typumwandlung sollte immer genutzt werden, um anderen Entwicklern zu zeigen, dass man diese Typumwandlung nicht einfach übersehen hat –



Genauigkeitsverlust ●

Bei Umwandlung aus größerem Wertebereich in den kleineren



Runden und Clamping (Abschneiden) sind implementationsabhängig –



z.B. 'int iNumber = (int)4.32' oder alternativ 'int iNumber = int(4.32)'

z.B. ergibt 'int iNumber = 2.5 / 2;' das Resultat 1

Vorsicht beim Umwandeln zwischen 'signed' and 'unsigned' ●

'(long)-1 < (unsigned long)1' liefert beispielsweise 'false' Grundlagen der Informatik (Alex Rempel)

11

Grundlagen der Informatik Vorrangregeln ●

Vorrangregeln (höhere Position bedeutet höhere Priorität) ●



::

danach

. -> [] () sizeof

! + -(unär) ++ -- ~ &(Adressoperator) *(Defererenzierung) new new[] delete delete[]



.* ->*

danach

*/%



+-

danach

>



< > =

danach

== !=



&(bitweise UND)

danach

^



|

danach

&&



||

danach

?:



Zuweisungen, wie z.B. = +=

danach

,

Grundlagen der Informatik (Alex Rempel)

12

Grundlagen der Informatik Vorrangregeln ●

Vorrangregeln ●

Gleiche Priorität: Auswertung von links nach rechts –



Ausnahme: unäre Operatoren von rechts nach links

Klammern werden berücksichtigt –

Empfehlung: zur besseren Lesbarkeit und Robustheit bei komplexen Ausdrücken lieber Klammern nutzen

Grundlagen der Informatik (Alex Rempel)

13

Grundlagen der Informatik Kommentare ●

Kommentare ●

Einzeilig: alles nach '//'



Mehrzeilig: alles zwischen '/*' und '*/'



Kommentare werden beim Kompilieren ignoriert



Empfehlungen: –

nie das offensichtliche kommentieren, stattdessen verständlicheren Code schreiben



immer alles kommentieren, was einem anderen Entwickler die Konzepte erklärt ●

auch wenn diese einem selbst ganz klar erscheinen Grundlagen der Informatik (Alex Rempel)

14