C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.
-
Upload
jochim-kempen -
Category
Documents
-
view
117 -
download
0
Transcript of C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.
![Page 1: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/1.jpg)
C- Syntax
![Page 2: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/2.jpg)
Bestandteile der Sprache C:
•Ausdrücke
•Anweisungen
![Page 3: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/3.jpg)
Ausdruck
![Page 4: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/4.jpg)
Ein Ausdruck ist eine Folge von Operatoren und Operanden. Ein Ausdruck ist - grob gesagt - ein Term oder eine mathematische Formel.
Jeder Ausdruck hat einen Wert !!
![Page 5: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/5.jpg)
Es gibt folgende Ausdrücke:
- arithmetische Ausdrücke
- relationale und logische Ausdrücke
- Zuweisungsausdrücke
![Page 6: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/6.jpg)
ArithmetischeAusdrücke
![Page 7: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/7.jpg)
Beispiele:In allen folgenden Beispielen wird stillschweigend vorausgesetzt, dass die benutzten Variablen alle vorher deklariert wurden!!!
![Page 8: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/8.jpg)
3Literal (Konstante),
Wert des Ausdrucks: 3
3+5-2 Wert des Ausdrucks: 6
3+kein Ausdruck
(syntaktisch falsch)
x Variable, Wert des Ausdrucks: unbekannt,
da der Wert von x in diesem Zusammenhang dem Programmierer nicht bekannt ist.
2x keine Variable: Variablenname darf nicht mit einer Ziffer beginnen !
(syntaktisch falsch)
![Page 9: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/9.jpg)
3+x-2x kein Ausdruck, da * in 2x fehlt(syntaktisch falsch)
x+3
x-y/b+3-(3+y)*4Wert des Ausdrucks: unbekannt
27%4ganzzahliger Rest bei der Division:
27 : 4 = 6 Rest 3, also Wert des Ausdrucks: 3
/ bedeutet Division, zuerst werden Klammern ausgewertet,
dann Punkt vor Strich
Ausdruck, Wert des Ausdrucks: unbekannt
![Page 10: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/10.jpg)
26%4
a++ erhöht a um 1, Wert des Ausdrucks: unbekanntb--
verringert b um 1,Wert des Ausdrucks: unbekannt
ganzzahliger Rest bei der Division: 26 : 4 = 6 Rest 2, also
Wert des Ausdrucks: 2
25%4 ganzzahliger Rest bei der Division: 25 : 4 = 6 Rest 1, also
Wert des Ausdrucks: 1
24%4 ganzzahliger Rest bei der Division: 24 : 4 = 6 Rest 0, also
Wert des Ausdrucks: 0
![Page 11: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/11.jpg)
Relationale und logische Ausdrücke
![Page 12: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/12.jpg)
Relationale und logische Ausdrücke sind
wahr oder falsch
![Page 13: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/13.jpg)
Kleiner Ausflug in die formale Logik
![Page 14: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/14.jpg)
Die zusammengesetzte Aussage A UND Bist nur wahr, wenn A und B wahr sind, ansonsten ist sie falsch
![Page 15: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/15.jpg)
Die zusammengesetzte Aussage A ODER Bist nur falsch, wenn A und B falsch sind, ansonsten ist sie wahr.
![Page 16: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/16.jpg)
Die negierte Aussage NICHT Aist falsch, wenn A wahr ist und wahr, wenn A falsch ist.
![Page 17: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/17.jpg)
Diese Zusammenhänge lassen sich auch mit einer
sogenannten Wahrheitstafeln darstellen:
![Page 18: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/18.jpg)
A B A und B A oder BW W W WW F F WF W F WF F F F
![Page 19: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/19.jpg)
A nicht AW FF W
![Page 20: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/20.jpg)
C kennt aber kein "wahr" oder "falsch", sondern:
Ausdruck Wertfalsch 0
wahr 1
![Page 21: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/21.jpg)
C++ kennt aber "wahr" oder "falsch":
Ausdruck Wertfalsch false
wahr true
![Page 22: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/22.jpg)
Beispiele:
![Page 23: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/23.jpg)
0 < 5
8 > 9x+3 >= 51 == 2 Wert: 0
1 != 3
Wert: 1
Wert: 0
Wert: 1
Wert hängt von x ab.
mathematisches =
mathematisches
![Page 24: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/24.jpg)
4 < x < 7
Relationale Operatoren sind zweistellig und dürfen nur mit zwei Operanden arbeiten. Deswegen ist folgende Zeichenkette kein Ausdruck:
![Page 25: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/25.jpg)
LogischeAusdrücke
![Page 26: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/26.jpg)
Beispiele:
![Page 27: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/27.jpg)
a && b
x || y(x>0) && (x<10)!(x<y)
logisches UND
logisches ODER
logisches NICHT
![Page 28: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/28.jpg)
0 && 1
0 || 0!0!1
Wert: 0
Wert: 0
Wert: 1
Wert: 0
![Page 29: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/29.jpg)
Was macht der Compiler, wenn er Ausdrücke der folgenden Art auswerten soll ?
![Page 30: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/30.jpg)
3 && 4
7 || 9.5!17!13.1425
![Page 31: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/31.jpg)
C wertet wie folgt aus:
Ausdruck Wertfalsch 0
wahr 0
![Page 32: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/32.jpg)
Wert: 1
Wert: 1
Wert: 0
Wert: 0
3 && 4
7 || 9.5!17!13.1425
3 ungleich 0, also wahr, also Wert: 1
4 ungleich 0, also wahr, also Wert: 1
![Page 33: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/33.jpg)
OperatorenArithmetische Operatoren:
+ - * / % ++ --
Vergleichsoperatoren:
< <= > >= == !=
Logische Operatoren: ! && ||
Bitweise Operatoren: ~ & |
![Page 34: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/34.jpg)
Zuweisungsausdrücke
![Page 35: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/35.jpg)
Ein Zuweisungsausdruck enthält einen
Zuweisungsoperator wie z.B. =
+=++--
![Page 36: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/36.jpg)
Ein Zuweisungsausdruck ist ein Ausdruck, keine Anweisung, der eine Wirkung (Nebenwirkung) hat, nämlich die Zuweisung.Diese Zuweisung verändert den Wert der Variablen.
![Page 37: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/37.jpg)
Da ein Zuweisungsausdruck ein Ausdruck ist, hat ein
Zuweisungsausdruck also einen Wert !!!
![Page 38: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/38.jpg)
Beispiele:
![Page 39: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/39.jpg)
a = 17
x = 3+2*4
Wert des Ausdrucks : 17Nebenwirkung: Wert der Variablen a ist 17
Wert des Ausdrucks : 11Nebenwirkung: Wert der Variablen x ist 11
Punkt vor Strich.Dies bedeutet, dass dass z.B. die Multiplikation Priorität (=Vorrang) vor der Addition hat
![Page 40: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/40.jpg)
y = x = 2
Wie wird der Wert diesen Ausdrucks berechnet ?
![Page 41: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/41.jpg)
y = x = 2
Wert des Ausdrucks : 2Nebenwirkung: Wert der Variablen y ist 2
Abarbeitung:von rechts nach links
Wert des Ausdrucks : 2Nebenwirkung: Wert der Variablen x ist 2
Warum Abarbeitung von rechts nach links?
Weil dies in der Norm so festgelegt ist!Nähers dazu später! (Assoziativität = Auswertung eines Ausdrucks
von rechts oder links)
![Page 42: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/42.jpg)
y = x = 2
Weil links des Zuweisungszeichens (also =) eine Variable stehen muss.
Aber warum macht diese Zuweisung Probleme?
Dies ist noch syntaktisch korrekt, aber....
Wäre der Ausdruck syntaktisch korrekt, wenn Abarbeitung von links nach rechts geschehen würde?
Hier steht aber keine Variable, sondern eine Zuweisung, also ist dies syntaktisch falsch !!
![Page 43: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/43.jpg)
a=(x=5)*3
Wert des Ausdrucks : 15Nebenwirkung: Wert der Variablen a ist 15
Wert des Ausdrucks : 5Nebenwirkung: Wert der Variablen x ist 5
x=x+20Welchen Wert hat x nach dem Zuweisungsausdruck?
Da x nach dem letzten Zuweisungsausdruck den Wert 5 erhalten hat, hat x jetzt den Wert 5 + 20, also 25
![Page 44: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/44.jpg)
a++
a--
Erhöht den Wert der Variablen a um eins nach der Verwendung in einem Ausdruck.
Verringert den Wert der Variablen a um eins nach der Verwendung in einem Ausdruck.
++aErhöht den Wert der Variablen a um eins vor der
Verwendung in einem Ausdruck.
--aVerringert den Wert der Variablen a um eins vor
der Verwendung in einem Ausdruck.
![Page 45: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/45.jpg)
Beispiele dazu:Welche
Bildschirmausgaben erzeugt folgendes
Programm?
![Page 46: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/46.jpg)
int main(){int i;i=10;
printf("Wert nach i++ ist %d\n",i++);
printf("Wert nach i-- ist %d\n",i--);
printf("Wert nach ++i ist %d\n",++i);
printf("Wert nach --i ist %d\n",--i);
return 0;}
Wert nach i++ ist 10
Wert nach i-- ist 11
Wert nach ++i ist 11
Wert nach --i ist 10
![Page 47: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/47.jpg)
printf("Wert nach i++ ist %d\n",i++);
Durch welche 2 Anweisungen kann man diese Anweisung also simulieren?
printf("Wert nach i++ ist %d\n", i); i=i+1; printf("Wert nach i-- ist %d\n",i--); printf("Wert nach i-- ist %d\n", i); i=i-1; printf("Wert nach ++i ist %d\n", ++i); i=i+1; printf("Wert nach ++i ist %d\n", i); printf("Wert nach --i ist %d\n", --i); i=i-1; printf("Wert nach --i ist %d\n", i);
Durch welche 2 Anweisungen kann man diese Anweisung also simulieren?
Durch welche 2 Anweisungen kann man diese Anweisung also simulieren?
Durch welche 2 Anweisungen kann man diese Anweisung also simulieren?
![Page 48: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/48.jpg)
a=(x==x+1)+4
Wert des Ausdrucks : 4Nebenwirkung: Wert der Variablen a ist 4
Wert des Ausdrucks : 0
Dieser Ausdruck ist – egal welchen Wert x besitzt - immer falsch !!
Warum wird zu x erst 1 addiert und
Weil dies in der Norm so festgelegt ist!Nähers dazu später! (Priorität = Vorrang)
Nicht zuerst x auf Gleichheit mit x geprüft?
![Page 49: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/49.jpg)
x+=y
Dies ist eine abkürzende Schreibweise für ...
x=x+yDas gleiche gilt für:
*= -= usw.
![Page 50: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/50.jpg)
Priorität und Assoziativität bei Operatoren.
Siehe Hilfe-Menü von MSVC++ Stichwort:
precedence
![Page 51: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/51.jpg)
Ein Operator hat höhere Priorität bedeutet, daß die zugehörige Operation zuerst ausgeführt wird, wie z.B:3+5*6(Punkt vor Strich)
= 3 + (5 * 6) = 33
![Page 52: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/52.jpg)
Wenn zwei Operatoren die gleiche Priorität haben,
bestimmt die Assoziativität, welche Operation zuerst
ausgeführt wird.
![Page 53: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/53.jpg)
Beispiel:
![Page 54: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/54.jpg)
* und / haben die gleiche Priorität und die
Assoziativität von Links nach Rechts (kurz: L).
![Page 55: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/55.jpg)
3 * 6 / 9
Wie wird der Wert dieses Ausdrucks berechnet ?
![Page 56: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/56.jpg)
3 * 6 / 9
18
2
Deswegen wird zuerst 3*6 (= 18) berechnet und dann 18/9 (=2)
![Page 57: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/57.jpg)
3 * 6 / 9
0
0
Welches Ergebnis hat der Ausdruck, wenn * und / rechtsassoziativ wären?
da 6 und 9 integer sind
![Page 58: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/58.jpg)
60 / 10 / 2
Wie wird der Wert dieses Ausdrucks berechnet ?
![Page 59: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/59.jpg)
60 / 10 / 2
6
3
Deswegen wird zuerst 60/10 (= 6) berechnet und dann 6/2 (=3)
![Page 60: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/60.jpg)
60 / 10 / 2
5
12
Welches Ergebnis hat der Ausdruck, wenn / rechtsassoziativ wäre?
![Page 61: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/61.jpg)
Bemerkungen:Ein einstelliger (unärer) Operator arbeitet mit einem Operand, wie zum Beispiel: -xEin zweistelliger (binärer) Operator arbeitet mit 2 Operanden, wie zum Beispiel:x-y, x+y, x*y, x/y, x%y,
![Page 62: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/62.jpg)
Ein dreistelliger (ternärer) Operator arbeitet mit 3 Operanden. In C gibt es nur einen ternären Operator (den wir hier nicht besprechen).
![Page 63: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/63.jpg)
In der folgenden Folie bedeutet:A : Assoziativität L : Linksassoziativität R : Rechtsassoziativität S : Stelligkeit U : unär (einstellig) B : binär (zweistellig) T : ternär (dreistellig)
![Page 64: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/64.jpg)
Pri
orit
ät n
imm
t von
obe
n na
ch u
nten
ab
Operatoren A S() [] -> . L B* + - ! ~ ++ -- & (typ) sizeof R U
* / % L B+ - L B<< >> L B< <= > >= L B== != L B& L B^ L B¦ L B&& L B¦¦ L B?: R T= += -= *= /= %= &= ^= ¦= <<= >>= R B
, L B
Reihenfolge der Auswertung
![Page 65: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/65.jpg)
a==b && a!=b
Wie wird der Wert dieses Ausdrucks berechnet ?
Diese Operatoren haben die gleiche Priorität. Sie ist grösser als die Priorität von &&
Welch(e)r Operator(en) hat (haben) die höchste Priorität ?
Deswegen werden die Ausdrücke zuerst ausgewertet
Da aus logischen Gründen einer dieser 2 Ausdrücke falsch ist, hat dieser Ausdruck den Wert 0
![Page 66: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/66.jpg)
Weiter mit:
Aufgaben aus dem Arbeitsblatt lösen.
(Prioritätentabelle befindet sich auf meiner Website
bzw. wird ausgeteilt).
![Page 67: C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.](https://reader036.fdocuments.net/reader036/viewer/2022062318/55204d6549795902118bac72/html5/thumbnails/67.jpg)
1) Welche der folgenden Zeichenreihen sind syntaktisch korrekte Ausdrücke (in der Programmiersprache C) und welche Werte haben diese Ausdrücke ?
Geben Sie selbst Ausdrücke an. Überprüfen Sie Ihre Ergebnisse mit Hilfe der Entwicklungsumgebung von Visual C++
Ausdruck Wert
3 = 2+7
3 * 3 + 4 * 4 == 5 * 5
x = 7 /*8+34
2x = x + x
y == y+1
7 && 8
7 || 8
!23
!7 || !8
i=(3==5)
i!=(4==4)
2) Formulieren Sie die folgenden mathematischen Ausdrücke als syntaktisch korrekte Ausdrücke in der Programmiersprache C.
z = 2+6/3
4 x 2 Möglichkeiten
2 < x < 5
a x < 8
1 < x 7
b x 9
c x 7
6 x
d > x > r
a x 83
1 > x 17
b x 9.4
y > x
b x
u < 3.14
w x 7
v 23
x!=5 2 Möglichkeiten