Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische...
-
Upload
hludwig-welle -
Category
Documents
-
view
115 -
download
0
Transcript of Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische...
![Page 1: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/1.jpg)
Ganze Zahlen
Die Typen int, unsigned int; Auswertung arithmetischer Aus-drücke, arithmetische
Operatoren
![Page 2: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/2.jpg)
Celsius to Fahrenheit// Program: fahrenheit.cpp// Convert temperatures from Celsius to Fahrenheit.
#include <iostream>
int main() { // Input std::cout << "Temperature in degrees Celsius =? "; int celsius; std::cin >> celsius;
// Computation and output std::cout << celsius << " degrees Celsius are " << 9 * celsius / 5 + 32 << " degrees Fahrenheit.\n"; return 0;}
![Page 3: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/3.jpg)
Celsius to Fahrenheit// Program: fahrenheit.cpp// Convert temperatures from Celsius to Fahrenheit.
#include <iostream>
int main() { // Input std::cout << "Temperature in degrees Celsius =? "; int celsius; std::cin >> celsius;
// Computation and output std::cout << celsius << " degrees Celsius are " << 9 * celsius / 5 + 32 << " degrees Fahrenheit.\n"; return 0;}
15 degrees Celsius are 59 degrees Fahrenheit.
![Page 4: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/4.jpg)
9 * celsius / 5 + 32
o arithmetischer Ausdrucko enthält drei Literale, eine Variable,
drei Operatorsymbole
![Page 5: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/5.jpg)
9 * celsius / 5 + 32
o arithmetischer Ausdrucko enthält drei Literale, eine Variable,
drei Operatorsymbole
Wie ist der Ausdruck geklammert?
![Page 6: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/6.jpg)
Assoziativität und Präzedenz
9 * celsius / 5 + 32bedeutet
(9 * celsius / 5) + 32
Regel 1: Punkt- vor Strichrechnung
![Page 7: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/7.jpg)
Assoziativität und Präzedenz
(9 * celsius / 5) + 32bedeutet
((9 * celsius) / 5) + 32
Regel 2: Von links nach rechts
![Page 8: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/8.jpg)
Assoziativität und Präzedenz
Regel 1: Multiplikative Operatoren (*, /, %) haben höhere Präzedenz (“binden stärker”) als additive Operatoren (+, -)
Regel 2: Arithmetische Operatoren (*, /, %, +, -) sind linksassoziativ (bei gleicher Präzedenz erfolgt Auswertung von links nach rechts
![Page 9: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/9.jpg)
Assoziativität und Präzedenz
-3 - 4bedeutet
(-3) - 4
Regel 3: Unäre +,- vor binären +,-
![Page 10: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/10.jpg)
Assoziativität und Präzedenz
Jeder Ausdruck kann mit Hilfe der
o Assoziativitäteno Präzedenzeno Stelligkeiten (Anzahl Operanden)
der beteiligten Operatoren eindeutiggeklammert werden (Details im Skript).
![Page 11: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/11.jpg)
Ausdrucksbäume
Klammerung ergibt Ausdrucksbaum: 9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 12: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/12.jpg)
Auswertungsreihenfolge
Von oben nach unten im Ausdrucksbaum:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 13: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/13.jpg)
Auswertungsreihenfolge
Von oben nach unten im Ausdrucksbaum:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 14: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/14.jpg)
Auswertungsreihenfolge
Von oben nach unten im Ausdrucksbaum:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 15: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/15.jpg)
Auswertungsreihenfolge
Von oben nach unten im Ausdrucksbaum:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 16: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/16.jpg)
Auswertungsreihenfolge
Von oben nach unten im Ausdrucksbaum:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 17: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/17.jpg)
Auswertungsreihenfolge
Von oben nach unten im Ausdrucksbaum:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 18: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/18.jpg)
Auswertungsreihenfolge
Von oben nach unten im Ausdrucksbaum:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 19: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/19.jpg)
Auswertungsreihenfolge
Reihenfolge ist nicht eindeutig bestimmt:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 20: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/20.jpg)
Auswertungsreihenfolge
Reihenfolge ist nicht eindeutig bestimmt:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 21: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/21.jpg)
Auswertungsreihenfolge
Reihenfolge ist nicht eindeutig bestimmt:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 22: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/22.jpg)
Auswertungsreihenfolge
Reihenfolge ist nicht eindeutig bestimmt:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 23: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/23.jpg)
Auswertungsreihenfolge
Reihenfolge ist nicht eindeutig bestimmt:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 24: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/24.jpg)
Auswertungsreihenfolge
Reihenfolge ist nicht eindeutig bestimmt:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 25: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/25.jpg)
Auswertungsreihenfolge
Reihenfolge ist nicht eindeutig bestimmt:
9 * celsius / 5 + 32
9 * celsius
(9 * celsius) / 5
((9 * celsius) / 5) + 32
![Page 26: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/26.jpg)
Auswertungsreihenfolge
o Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.
Knoten
Kinder
![Page 27: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/27.jpg)
Auswertungsreihenfolge
o Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.
Knoten
Kinder
![Page 28: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/28.jpg)
Auswertungsreihenfolge
o Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.
Knoten
Kinder
![Page 29: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/29.jpg)
Auswertungsreihenfolge
o Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.
Knoten
Kinder
![Page 30: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/30.jpg)
Auswertungsreihenfolge
o Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.
Knoten
KinderIn C++ ist die anzuwend-ende gültige Reihenfolge nicht spezifiziert.
![Page 31: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/31.jpg)
Auswertungsreihenfolge
o Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.
o “Guter” Ausdruck: jede gültige Reihen- folge führt zum gleichen Ergebnis
Knoten
KinderIn C++ ist die anzuwend-ende gültige Reihenfolge nicht spezifiziert.
![Page 32: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/32.jpg)
Arithmetische OperatorenSymbol
Stelligkeit
Präzedenz
Assoziativität
Unäres + + 1 16 rechts
Unäres - - 1 16 rechts
Multiplikation * 2 14 links
Division / 2 14 links
Modulus % 2 14 links
Addition + 2 13 links
Subtraktion - 2 13 links
Operand rechts
![Page 33: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/33.jpg)
Arithmetische OperatorenSymbol
Stelligkeit
Präzedenz
Assoziativität
Unäres + + 1 16 rechts
Unäres - - 1 16 rechts
Multiplikation * 2 14 links
Division / 2 14 links
Modulus % 2 14 links
Addition + 2 13 links
Subtraktion - 2 13 links
Alle Operatoren: R-Wert × R-Wert R-Wert
![Page 34: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/34.jpg)
Division und Modulus
o Operator / realisiert ganzzahlige Division:
![Page 35: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/35.jpg)
Division und Modulus
o Operator / realisiert ganzzahlige Division:
o in fahrenheit.C:
5 / 2 hat Wert 2
9 * celsius / 5 + 32:
15 degrees Celsius are 59 degrees Fahrenheit
![Page 36: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/36.jpg)
Division und Modulus
o Operator / realisiert ganzzahlige Division:
o in fahrenheit.C:
5 / 2 hat Wert 2
9 * celsius / 5 + 32:
15 degrees Celsius are 59 degrees Fahrenheit
9 / 5 * celsius + 32:
15 degrees Celsius are 47 degrees Fahrenheit
![Page 37: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/37.jpg)
Division und Modulus
o Operator / realisiert ganzzahlige Division:
o in fahrenheit.C:
5 / 2 hat Wert 2
9 * celsius / 5 + 32:
15 degrees Celsius are 59 degrees Fahrenheit
9 / 5 * celsius + 32:
15 degrees Celsius are 47 degrees Fahrenheit
![Page 38: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/38.jpg)
Division und Modulus
o Operator / realisiert ganzzahlige Division:
o in fahrenheit.C:
5 / 2 hat Wert 2
9 * celsius / 5 + 32:
15 degrees Celsius are 59 degrees Fahrenheit
1 * celsius + 32:
15 degrees Celsius are 47 degrees Fahrenheit
![Page 39: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/39.jpg)
Division und Modulus
o Operator / realisiert ganzzahlige Division:
o in fahrenheit.C:
5 / 2 hat Wert 2
9 * celsius / 5 + 32:
15 degrees Celsius are 59 degrees Fahrenheit
1 * 15 + 32:
15 degrees Celsius are 47 degrees Fahrenheit
![Page 40: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/40.jpg)
Division und Modulus
o Operator / realisiert ganzzahlige Division:
o in fahrenheit.C:
5 / 2 hat Wert 2
9 * celsius / 5 + 32:
15 degrees Celsius are 59 degrees Fahrenheit
47:
15 degrees Celsius are 47 degrees Fahrenheit
![Page 41: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/41.jpg)
Division und Modulus
o Modulus-Operator berechnet Rest der ganzzahligen Division
5 / 2 hat Wert 2 5 % 2 hat Wert 1
![Page 42: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/42.jpg)
Division und Modulus
o Modulus-Operator berechnet Rest der ganzzahligen Division
o Es gilt immer: 5 / 2 hat Wert 2 5 % 2 hat Wert 1
(a / b) * b + a % b hat den Wert von a
![Page 43: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/43.jpg)
Division und Modulus
o Modulus-Operator berechnet Rest der ganzzahligen Division
o Es gilt immer:
o Falls a oder b negativ, so gibt es zwei Möglichkeiten:
5 / 2 hat Wert 2 5 % 2 hat Wert 1
(a / b) * b + a % b hat den Wert von a
![Page 44: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/44.jpg)
Division und Modulus
o Modulus-Operator berechnet Rest der ganzzahligen Division
o Es gilt immer:
o Falls a oder b negativ, so gibt es zwei Möglichkeiten:
5 / 2 hat Wert 2
-5 % 2 hat Wert -1
(a / b) * b + a % b hat den Wert von a
-5 / 2 hat Wert -2
Rundung gegen 0
![Page 45: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/45.jpg)
Division und Modulus
o Modulus-Operator berechnet Rest der ganzzahligen Division
o Es gilt immer:
o Falls a oder b negativ, so gibt es zwei Möglichkeiten:
5 / 2 hat Wert 2
-5 % 2 hat Wert 1
(a / b) * b + a % b hat den Wert von a
-5 / 2 hat Wert -3
Rundung gegen unendlich
![Page 46: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/46.jpg)
Division und Modulus
o Modulus-Operator berechnet Rest der ganzzahligen Division
o Es gilt immer:
o Meistens: falls a oder b negativ, so wird gegen 0 gerundet;
5 / 2 hat Wert 2 5 % 2 hat Wert 1
(a / b) * b + a % b hat den Wert von a
![Page 47: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/47.jpg)
Inkrement und Dekrement
o Erhöhen / Erniedrigen einer Zahl um 1 ist eine häufige Operation
o geht für einen L-Wert so:
expr = expr + 1
![Page 48: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/48.jpg)
Inkrement und Dekrement
o Erhöhen / Erniedrigen einer Zahl um 1 ist eine häufige Operation
o geht für einen L-Wert so:
o Nachteile: o relativ lang
expr = expr + 1
![Page 49: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/49.jpg)
Inkrement und Dekrement
o Erhöhen / Erniedrigen einer Zahl um 1 ist eine häufige Operation
o geht für einen L-Wert so:
o Nachteile: o relativ lango expr wird zweimal ausgewertet (Effekte!)
expr = expr + 1
![Page 50: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/50.jpg)
In-/Dekrement-Operatoren
Gebrauch
Stelligkeit
Präz. Assoz. L/R-Werte
Post-Inkrement
expr++ 1 17 linksL-Wert -> R-Wert
Prä-Inkrement ++expr 1 16 rechts L-Wert -> L-Wert
Post-Dekrement
expr-- 1 17 links L-Wert -> R-Wert
Prä-Dekrement
--expr 1 16 rechts L-Wert-> L-Wert
![Page 51: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/51.jpg)
In-/Dekrement-Operatoren
Gebrauch
Effekt / Wert
Post-Inkrement
expr++ Wert von expr wird um 1 erhöht, der alte Wert von expr wird (als R-Wert) zurückgegeben
Prä-Inkrement ++exprWert von expr wird um 1 erhöht, der neue Wert von expr wird (als L-Wert) zurückgegeben
Post-Dekrement
expr--Wert von expr wird um 1 erniedrigt, der alte Wert von expr wird (als R-Wert) zurückgegeben
Prä-Dekrement
--exprWert von expr wird um 1 erniedrigt, der neue Wert von expr wird (als L-Wert) zurückgegeben
![Page 52: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/52.jpg)
In/Dekrement-Operatoren
Beispiel:
int a = 7;std::cout << ++a << "\n"; std::cout << a++ << "\n"; std::cout << a << "\n";
![Page 53: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/53.jpg)
In/Dekrement-Operatoren
Beispiel:
int a = 7;std::cout << ++a << "\n"; // Ausgabe 8std::cout << a++ << "\n"; std::cout << a << "\n";
![Page 54: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/54.jpg)
In/Dekrement-Operatoren
Beispiel:
int a = 7;std::cout << ++a << "\n"; // Ausgabe 8std::cout << a++ << "\n"; // Ausgabe 8std::cout << a << "\n";
![Page 55: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/55.jpg)
In/Dekrement-Operatoren
Beispiel:
int a = 7;std::cout << ++a << "\n"; // Ausgabe 8std::cout << a++ << "\n"; // Ausgabe 8std::cout << a << "\n"; // Ausgabe 9
![Page 56: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/56.jpg)
In/Dekrement-Operatoren
Ist die Anweisung ++expr; äquivalent zu expr++; ?
![Page 57: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/57.jpg)
In/Dekrement-Operatoren
Ist die Anweisung ++expr; äquivalent zu expr++; ?o Ja, aber…
o Prä-Inkrement ist effizienter (alter Wert muss nicht gespeichert werden)
o Post-In/Dekrement sind die einzigen linksasso-ziativen unärern Operatoren (nicht sehr intuitiv)
![Page 58: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/58.jpg)
Arithmetische Zuweisungen
Gebrauch Bedeutung
+= expr1 += expr2 expr1 = expr1 + expr2
-= expr1 -= expr2expr1 = expr1 - expr2
*= expr1 *= expr2expr1 = expr1 * expr2
/= expr1 /= expr2expr1 = expr1 / expr2
%= expr1 %= expr2expr1 = expr1 % expr2
![Page 59: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/59.jpg)
Arithmetische Zuweisungen
Gebrauch Bedeutung
+= expr1 += expr2 expr1 = expr1 + expr2
-= expr1 -= expr2expr1 = expr1 - expr2
*= expr1 *= expr2expr1 = expr1 * expr2
/= expr1 /= expr2expr1 = expr1 / expr2
%= expr1 %= expr2expr1 = expr1 % expr2
Arithmetische Zuweisungen werten expr1 nur einmal aus.
![Page 60: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/60.jpg)
Wertebereich des Typs int
o b-Bit-Repräsentierung: Wertebereich umfasst die ganzen Zahlen
{-2b-1, -2b-1+1,…, -1, 0, 1,…,2b-1-1}
![Page 61: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/61.jpg)
Wertebereich des Typs int
o b-Bit-Repräsentierung: Wertebereich umfasst die ganzen Zahlen
{-2b-1, -2b-1+1,…, -1, 0, 1,…,2b-1-1}
o Auf den meisten Plattformen: b = 32
![Page 62: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/62.jpg)
Wertebereich des Typs int// Program: limits.cpp// Output the smallest and the largest value of type int.
#include <iostream>#include <limits>
int main() { std::cout << "Minimum int value is " << std::numeric_limits<int>::min() << ".\n" << "Maximum int value is " << std::numeric_limits<int>::max() << ".\n"; return 0;}
![Page 63: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/63.jpg)
Wertebereich des Typs int// Program: limits.cpp// Output the smallest and the largest value of type int.
#include <iostream>#include <limits>
int main() { std::cout << "Minimum int value is " << std::numeric_limits<int>::min() << ".\n" << "Maximum int value is " << std::numeric_limits<int>::max() << ".\n"; return 0;}
z.B.Minimum int value is -2147483648
Maximum int value is 2147483647
![Page 64: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/64.jpg)
Überlauf und Unterlauf
o Arithmetische Operationen (+, -, *) können aus dem Wertebereich herausführen
o Ergebnisse können inkorrekt sein.
![Page 65: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/65.jpg)
Überlauf und Unterlauf
o Arithmetische Operationen (+, -, *) können aus dem Wertebereich herausführen
o Ergebnisse können inkorrekt sein.power8.cpp: 158 = -1732076671
power20.cpp: 320 = -808182895
![Page 66: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/66.jpg)
Überlauf und Unterlauf
o Arithmetische Operationen (+, -, *) können aus dem Wertebereich herausführen
o Ergebnisse können inkorrekt sein.
o Es gibt keine Fehlermeldung!
power8.cpp: 158 = -1732076671
power20.cpp: 320 = -808182895
![Page 67: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/67.jpg)
Der Typ unsigned int
o Wertebereich
o Alle arithmetischen Operatoren gibt es auch für unsigned int
o Literale: 1u, 17u,…
{0, 1,…, 2b-1}
![Page 68: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/68.jpg)
Gemischte Ausdrücke
o Operatoren können Operanden verschiedener Typen haben (z.B. int und unsigned int
o Solche gemischten Ausdrücke sind vom “allgemeineren” Typ unsigned int
o int-Operanden werden konvertiert nach unsigned int
17 + 17u
![Page 69: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/69.jpg)
Konversion
int Wert Vorzeichen
unsigned int Wert
x ≥ 0 x
x < 0 x + 2b
![Page 70: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/70.jpg)
Konversion
int Wert Vorzeichen
unsigned int Wert
x ≥ 0 x
x < 0 x + 2b
Bei Zweierkomplement-Darstellung passiert dabei intern gar nichts!
![Page 71: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/71.jpg)
Konversion “andersherum”
o Die Deklaration int a = 3u konvertiert 3u nach int (Wert
bleibt erhalten, weil er im Wertebereich von int liegt; andernfalls ist das Ergebnis implementierungsabhängig)
![Page 72: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/72.jpg)
Wahrheitswerte
Boole’sche Funktionen; der Typ bool; logische und relationale
Operatoren; Kurzschlussauswertung
![Page 73: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/73.jpg)
Boole’sche Funktionen
o Boole’sche Funktion:
f: {0,1}n -> {0,1}
o 0 enstpricht “falsch”
o 1 entspricht “wahr”
![Page 74: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/74.jpg)
Boole’sche Funktionen
o Boole’sche Funktion:
f: {0,1}2 -> {0,1}
o 0 enstpricht “falsch”
o 1 entspricht “wahr”
x y AND (x,y)
0 0 0
0 1 0
1 0 0
1 1 1
![Page 75: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/75.jpg)
Boole’sche Funktionen
o Boole’sche Funktion:
f: {0,1}2 -> {0,1}
o 0 enstpricht “falsch”
o 1 entspricht “wahr”
x y OR (x,y)
0 0 0
0 1 1
1 0 1
1 1 1
![Page 76: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/76.jpg)
Boole’sche Funktionen
o Boole’sche Funktion:
f: {0,1}1 -> {0,1}
o 0 enstpricht “falsch”
o 1 entspricht “wahr”
x NOT (x)
0 1
1 0
![Page 77: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/77.jpg)
Vollständigkeit
o AND, OR, NOT sind die in C++ verfügbaren Boole’schen Funktionen
o Alle anderen binären boole’schen Funktionen sind daraus erzeugbar
![Page 78: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/78.jpg)
Vollständigkeit
o AND, OR, NOT sind die in C++ verfügbaren Boole’schen Funktionen
o Alle anderen binären boole’schen Funktionen sind daraus erzeugbar
x y XOR (x,y)
0 0 0
0 1 1
1 0 1
1 1 0
![Page 79: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/79.jpg)
Vollständigkeit
o AND, OR, NOT sind die in C++ verfügbaren Boole’schen Funktionen
o Alle anderen binären boole’schen Funktionen sind daraus erzeugbar
x y XOR (x,y)
0 0 0
0 1 1
1 0 1
1 1 0
AND (OR (x,y), NOT (AND (x,y)))
XOR (x,y) =
![Page 80: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/80.jpg)
Vollständigkeit: Beweis
o Identifiziere binäre boole’sche Funktion mit ihrem charakteristischem Vektor:
![Page 81: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/81.jpg)
Vollständigkeit: Beweis
o Identifiziere binäre boole’sche Funktion mit ihrem charakteristischem Vektor:
x yXOR (x,y)
0 0 0
0 1 1
1 0 1
1 1 0
Charakteristischer Vektor: 0110
![Page 82: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/82.jpg)
Vollständigkeit: Beweis
o Identifiziere binäre boole’sche Funktion mit ihrem charakteristischem Vektor:
x yXOR (x,y)
0 0 0
0 1 1
1 0 1
1 1 0
Charakteristischer Vektor: 0110
XOR = f0110
![Page 83: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/83.jpg)
Vollständigkeit: Beweis
o Schritt 1: erzeuge die Funktionen f0001, f0010, f0100, f1000
![Page 84: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/84.jpg)
Vollständigkeit: Beweis
o Schritt 1: erzeuge die Funktionen f0001, f0010, f0100, f1000
f0001 = AND (x, y)
![Page 85: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/85.jpg)
Vollständigkeit: Beweis
o Schritt 1: erzeuge die Funktionen f0001,
f0010, f0100, f1000
f0001 = AND (x, y)
f0010 = AND (x, NOT (y))
![Page 86: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/86.jpg)
Vollständigkeit: Beweis
o Schritt 1: erzeuge die Funktionen f0001,
f0010, f0100, f1000
f0001 = AND (x, y)
f0010 = AND (x, NOT (y))
f0100 = AND (y, NOT (x))
![Page 87: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/87.jpg)
Vollständigkeit: Beweis
o Schritt 1: erzeuge die Funktionen f0001, f0010,
f0100, f1000
f0001 = AND (x, y)
f0010 = AND (x, NOT (y))
f0100 = AND (y, NOT (x))
f1000 = NOT (OR (x, y))
![Page 88: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/88.jpg)
Vollständigkeit: Beweis
o Schritt 2: erzeuge alle Funktionen
f1101 = OR (f1000, OR (f0100, f0001))
![Page 89: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/89.jpg)
Vollständigkeit: Beweis
o Schritt 2: erzeuge alle Funktionen
f1101 = OR (f1000, OR (f0100, f0001))
f0000 = 0
![Page 90: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/90.jpg)
Der Typ bool
o Repräsentiert Wahrheitswerteo Literale true und falseo Wertebereich {true, false}
![Page 91: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/91.jpg)
Der Typ bool
o Repräsentiert Wahrheitswerteo Literale true und falseo Wertebereich {true, false}
bool b = true; // Variable mit Wert true
![Page 92: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/92.jpg)
bool vs. int: Konversion
bool’s können überall dort verwendet werden, wo int’s gefordert sind, und umgekehrt
![Page 93: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/93.jpg)
bool vs. int: Konversion
bool’s können überall dort verwendet werden, wo int’s gefordert sind, und umgekehrt
bool int
true 1
false 0
![Page 94: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/94.jpg)
bool vs. int: Konversion
bool’s können überall dort verwendet werden, wo int’s gefordert sind, und umgekehrt
bool int
true 1
false 0
int bool
0 true
0 false
![Page 95: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/95.jpg)
bool vs. int: Konversion
Existierende Programme verwenden oft keine bool’s, sondern nur die int’s 0 und 1; das ist aber schlechter Stil.
bool int
true 1
false 0
int bool
0 true
0 false
![Page 96: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/96.jpg)
Logische Operatoren
Symbol Stelligkeit Präzedenz Assoziativität
Logisches Und (AND) && 2 6 links
Logisches Oder (OR) || 2 5 links
Logisches Nicht (NOT) ! 1 16 rechts
![Page 97: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/97.jpg)
Logische Operatoren
Symbol Stelligkeit Präzedenz Assoziativität
Logisches Und (AND) && 2 6 links
Logisches Oder (OR) || 2 5 links
Logisches Nicht (NOT) ! 1 16 rechts
bool (× bool) -> bool
![Page 98: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/98.jpg)
Logische Operatoren
Symbol Stelligkeit Präzedenz Assoziativität
Logisches Und (AND) && 2 6 links
Logisches Oder (OR) || 2 5 links
Logisches Nicht (NOT) ! 1 16 rechts
bool (× bool) -> bool
R-Wert (× R-Wert) -> R-Wert
![Page 99: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/99.jpg)
Relationale Operatoren
Symbol Stelligkeit Präzedenz Assoziativität
Kleiner < 2 11 links
Grösser > 2 11 links
Kleiner oder gleich <= 2 11 links
Grösser oder gleich >= 2 11 links
Gleich == 2 10 links
Ungleich != 2 10 links
![Page 100: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/100.jpg)
Relationale Operatoren
Symbol Stelligkeit Präzedenz Assoziativität
Kleiner < 2 11 links
Grösser > 2 11 links
Kleiner oder gleich <= 2 11 links
Grösser oder gleich >= 2 11 links
Gleich == 2 10 links
Ungleich != 2 10 links
Zahlentyp × Zahlentyp -> bool
![Page 101: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/101.jpg)
Relationale Operatoren
Symbol Stelligkeit Präzedenz Assoziativität
Kleiner < 2 11 links
Grösser > 2 11 links
Kleiner oder gleich <= 2 11 links
Grösser oder gleich >= 2 11 links
Gleich == 2 10 links
Ungleich != 2 10 links
Zahlentyp × Zahlentyp -> bool
R-Wert × R-Wert -> R-Wert
![Page 102: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/102.jpg)
DeMorgan’sche Regeln
!(a && b) == (!a || !b) !(a || b) == (!a && !b)
![Page 103: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/103.jpg)
DeMorgan’sche Regeln
!(a && b) == (!a || !b) !(a || b) == (!a && !b)
! (reich und schön) == ( arm oder hässlich )
![Page 104: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/104.jpg)
Präzedenzen
Binäre arithmetische Operatoren binden stärker alsRelationale Operatoren, und diese binden stärker alsbinäre logische Operatoren.
![Page 105: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/105.jpg)
Präzedenzen
Binäre arithmetische Operatoren binden stärker alsRelationale Operatoren, und diese binden stärker alsbinäre logische Operatoren.
7 + x < y && y != 3 * z
![Page 106: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/106.jpg)
Präzedenzen
Binäre arithmetische Operatoren binden stärker alsRelationale Operatoren, und diese binden stärker alsbinäre logische Operatoren.
((7 + x) < y) && (y != (3 * z))
![Page 107: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/107.jpg)
Kurzschlussauswertung
o Logische Operatoren && und ||werten den linken Operanden zuerst aus
o Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet
![Page 108: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/108.jpg)
Kurzschlussauswertung
o Logische Operatoren && und ||werten den linken Operanden zuerst aus
o Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet
x != 0 && z / x > y
![Page 109: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/109.jpg)
Kurzschlussauswertung
o Logische Operatoren && und ||werten den linken Operanden zuerst aus
o Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet
x != 0 && z / x > yX hat Wert 1:
![Page 110: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/110.jpg)
Kurzschlussauswertung
o Logische Operatoren && und ||werten den linken Operanden zuerst aus
o Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet
x != 0 && z / x > yX hat Wert 1:
![Page 111: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/111.jpg)
Kurzschlussauswertung
o Logische Operatoren && und ||werten den linken Operanden zuerst aus
o Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet
true && z / x > yX hat Wert 1:
![Page 112: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/112.jpg)
Kurzschlussauswertung
o Logische Operatoren && und ||werten den linken Operanden zuerst aus
o Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet
true && z / x > yX hat Wert 1:
![Page 113: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/113.jpg)
Kurzschlussauswertung
o Logische Operatoren && und ||werten den linken Operanden zuerst aus
o Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet
x != 0 && z / x > yX hat Wert 0:
![Page 114: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/114.jpg)
Kurzschlussauswertung
o Logische Operatoren && und ||werten den linken Operanden zuerst aus
o Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet
x != 0 && z / x > yX hat Wert 0:
![Page 115: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/115.jpg)
Kurzschlussauswertung
o Logische Operatoren && und ||werten den linken Operanden zuerst aus
o Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet
false && z / x > yX hat Wert 0:
![Page 116: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/116.jpg)
Kurzschlussauswertung
o Logische Operatoren && und ||werten den linken Operanden zuerst aus
o Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet
falseX hat Wert 0:
![Page 117: Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.](https://reader036.fdocuments.us/reader036/viewer/2022062307/55204d7749795902118cc890/html5/thumbnails/117.jpg)
Kurzschlussauswertung
o Logische Operatoren && und ||werten den linken Operanden zuerst aus
o Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet
x != 0 && z / x > y
keine Division durch Null!