Programmierkurs C3. Operatoren und Ausdrcke3 - 1 Wolfgang
Effelsberg 3. Operatoren und Ausdrcke Ausdruck (expression):
Verarbeitungsvorschrift zur Ermittlung eines Wertes besteht aus
Operanden und Operatoren wichtigste Ausdrcke: arithmetische und
logische (Boole'sche) Ausdrcke Beispiele: inti = 5, j = 2, k = 23;
floatx = 2.0, y = 5.5; doubled = 2.4; Beachte: % ist der
modulo-Operator (Rest bei der Ganzzahldivision). AusdruckResultat i
/ j2 k % i * j6 k 7 % 521 x * y 74.0 y / x2.75 y % xnicht erlaubt d
/ 21.2
Folie 2
Programmierkurs C3. Operatoren und Ausdrcke3 - 2 Wolfgang
Effelsberg Operatoren und Ausdrcke (2) Regeln: Bei der Auswertung
gelten Vorrangregeln, z. B. Punktrechnung geht vor Strichrechnung.
a/b ergibt fr a, b int wiederum einen int-Wert, nmlich den
Ganzzahl- Anteil der Division. Achtung! Es wird nicht kaufmnnisch
gerundet! a%b (die Modulo-Funktion) ist auf float und double nicht
erlaubt. Bei Mischung von int und float/double in einem Ausdruck
ist das Resultat float/double.
Folie 3
Programmierkurs C3. Operatoren und Ausdrcke3 - 3 Wolfgang
Effelsberg Der L-Wert (1) Ein L-Wert ist ein Ausdruck, der ein
Objekt (einen benannten Speicherbe- reich) bezeichnet. L-Werte sind
Objekte, denen Ergebnisse von Operationen zugeordnet werden knnen.
Ein Beispiel fr einen L-Wert ist ein Variablenname mit geeignetem
Typ und passender Speicherklasse. Manche Operatoren erwarten
L-Werte als Operanden, manche liefern einen L-Wert als Resultat.
Vereinfacht kann man sich merken, dass ein L-Wert etwas ist, was
auf der linken Seite einer Wertzuweisung stehen darf.
Folie 4
Programmierkurs C3. Operatoren und Ausdrcke3 - 4 Wolfgang
Effelsberg Der L-Wert (2) L-Wert ( [ * ) Bezeichner ] L-Wert
Bezeichner L-Wert Ausdruck. ->
Folie 5
Programmierkurs C3. Operatoren und Ausdrcke3 - 5 Wolfgang
Effelsberg Adressoperator Beispiel: &y (dazu spter mehr im
Kapitel ber Zeigerarithmetik) Adressoperator L-Wert &
Programmierkurs C3. Operatoren und Ausdrcke3 - 7 Wolfgang
Effelsberg Zuweisungsoperator Beispiele: a += 5/* dasselbe wie a =
a + 5 */ l[a]= 17 + 4 a = b = c = 7 Zuweisung
L-WertZuweisungsoperatorAusdruck -*/%+ Zuweisungsoperator
^|>>float), so sollte explizit konvertiert werden, um
anzuzeigen, wie die Konvertierung vom Programmierer gewollt ist.
Beispiel: int a; doublex; a = (int) (5 * x); cast-Operator Typname
( Ausdruck )
Folie 14
Programmierkurs C3. Operatoren und Ausdrcke3 - 14 Wolfgang
Effelsberg Der sizeof-Operator C verwendet den unren Operator
sizeof, um die Anzahl von Bytes zu bestimmen, die zur Speicherung
eines Objektes bentigt werden. Beispiel: int a; sizeof(char)/*
liefert in der Regel 1 */ sizeof(a*2)/* liefert sizeof(int) */ )(
sizeof-Operator Typname sizeof Ausdruck
Programmierkurs C3. Operatoren und Ausdrcke3 - 16 Wolfgang
Effelsberg Vergleichsoperatoren (2) Die Rangordnung (Przedenz) der
Relationsoperatoren ist kleiner als die der arithmetischen
Operatoren. Die Rangordnung der Gleichheitsoperatoren ist kleiner
als die der Relations- operatoren. Das Ergebnis eines
Vergleichsoperators liefert entweder falsch oder wahr. Beispiele: a
== b y >= z Merke: Das einfache Gleichheitszeichen ist in C der
Zuweisungsoperator, nicht der Vergleichsoperator ist gleich !
Folie 17
Programmierkurs C3. Operatoren und Ausdrcke3 - 17 Wolfgang
Effelsberg Logische Operatoren && ist das logische UND, | |
ist das logische ODER. Die Wertigkeit von && ist hher als
die von | |, aber beide haben eine klei- nere Wertigkeit als unre,
arithmetische und Vergleichsoperatoren. Lediglich die
Zuweisungsoperatoren haben eine noch geringere Wertigkeit. ||
&& logische Verknpfung Ausdruck 1Ausdruck 2
Folie 18
Programmierkurs C3. Operatoren und Ausdrcke3 - 18 Wolfgang
Effelsberg Der Komma-Operator Zwei durch Komma getrennte Ausdrcke
werden nacheinander von links nach rechts ausgefhrt. Datentyp und
Resultat des Ausdrucks sind vom Typ und Wert von Ausdruck 2.
Beispiel: for (s = 0, i = 0; i< n; i++) s += x[i]; summiert die
Elemente des Vektors x[ ]. Komma-Ausdruck Ausdruck 1Ausdruck
2,
Folie 19
Programmierkurs C3. Operatoren und Ausdrcke3 - 19 Wolfgang
Effelsberg Spezielle Operatoren: Bitoperatoren (1) Die kleinste
adressierbare Speichereinheit in C ist ein Byte (char). Es ist aber
mglich, auch auf einzelne Bits zuzugreifen. Dies erfolgt mit Hilfe
der Bitoperatoren. Bitweise logische Operatoren: Shift-Operatoren
(Linksverschiebung, Rechtsverschiebung): AktionSymbol bitweises
Komplement~ bitweises AND& bitweises OR| bitweises XOR^
leftshift>
Folie 20
Programmierkurs C3. Operatoren und Ausdrcke3 - 20 Wolfgang
Effelsberg Spezielle Operatoren: Bitoperatoren (2) Der Operator ~
ist als einziger unr (monadisch, einstellig). Er bildet das
Komplement. Beispiel: x = (int) 5 (dezimal) => x =
0000000000000101 (binr) => ~x = 1111111111111010 (binr) Die
anderen Operatoren sind duadische (zweistellige) Operatoren und ar-
beiten bitweise, wie in der Logik definiert. Beispiel: x = 1100
(binr) y = 1010 (binr) => x ^ y = 0110 (binr) (XOR-Operation)
Achtung! Die Verwechslung von && mit & sowie von | |
mit | ist ein hufiger Programmierfehler in C!
Folie 21
Programmierkurs C3. Operatoren und Ausdrcke3 - 21 Wolfgang
Effelsberg Bitoperatoren (1) Die Shift-Operatoren verschieben den
gesamten Bitstring um n Bits nach rechts oder links. Bits, die ber
die rechte bzw. linke Grenze des Operanden hinaus laufen, gehen
verloren. Beispiel: x = 0x05 (= 5 dezimal) x
Programmierkurs C3. Operatoren und Ausdrcke3 - 32 Wolfgang
Effelsberg Operatoren (2) RangArtSymbol in der Logik/ Arithmetik
Operator in C NameBeispiel 2monadisch &Adresse& a
3dyadisch/ arithmetisch/ multiplikativ * / DIV MOD *//%*//%
Multiplikation Divison ganzzahl. Division ganzzahliger Rest 3 * 4 3
/ 4 3 / 4 = 0 3 % 4 = 3 4dyadisch/ arithmetisch/ additiv +-+- +-+-
Addition Subtraktion 3 + 4 3 - 4 5dyadisch/ logisch LSHIFT> 5
6dyadisch/ logisch < < >= Relationsoperatorena > b
Folie 33
Programmierkurs C3. Operatoren und Ausdrcke3 - 33 Wolfgang
Effelsberg Operatoren (3) RangArtSymbol in der Logik/ Arithmetik
Operator in C NameBeispiel 7dyadisch== =! == =! Gleichheits-
operatoren a = b 8dyadisch/ logisch/ multiplikativ &Logisches
UND auf Bits x & y 9dyadisch/ logisch/ multiplikativ
XOR^Logisches XOR auf Bits x ^y 10dyadisch/ logisch/ additiv
|logisches ODER auf Bits x | y 11dyadisch/ logisch/ multiplikativ
&&logisches UNDa && b
Folie 34
Programmierkurs C3. Operatoren und Ausdrcke3 - 34 Wolfgang
Effelsberg Operatoren (4) RangArtSymbol in der Logik/ Arithmetik
Operator in C NameBeispiel 12dyadisch/ logisch/ additiv ||logisches
ODERa || b 13? :bedingter Ausdrucka ? c : b 14= += -= *= /= %=
&= ^= |= >= Zuweisungs- operatoren a += 1 a = a+1
15,Kommaoperators = 0, i = 0