> celsius; // Computation and output std::cout << celsius << " degrees Celsius are " << 9 * celsius / << " degrees Fahrenheit.\n"; return 0; } 15 degrees Celsius are 59 degrees Fahrenheit.">

Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren.

Ähnliche Präsentationen


Präsentation zum Thema: "Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren."—  Präsentation transkript:

1 Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren

2 Celsius to Fahrenheit // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit. #include 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 / << " degrees Fahrenheit.\n"; return 0; }

3 Celsius to Fahrenheit // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit. #include 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 / << " degrees Fahrenheit.\n"; return 0; } 15 degrees Celsius are 59 degrees Fahrenheit.

4 9 * celsius / o arithmetischer Ausdruck o enthält drei Literale, eine Variable, drei Operatorsymbole

5 9 * celsius / o arithmetischer Ausdruck o enthält drei Literale, eine Variable, drei Operatorsymbole Wie ist der Ausdruck geklammert?

6 Assoziativität und Präzedenz 9 * celsius / bedeutet (9 * celsius / 5) + 32 Regel 1: Punkt- vor Strichrechnung

7 Assoziativität und Präzedenz (9 * celsius / 5) + 32 bedeutet ((9 * celsius) / 5) + 32 Regel 2: Von links nach rechts

8 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

9 Assoziativität und Präzedenz bedeutet (-3) - 4 Regel 3: Unäre +,- vor binären +,-

10 Assoziativität und Präzedenz Jeder Ausdruck kann mit Hilfe der o Assoziativitäten o Präzedenzen o Stelligkeiten (Anzahl Operanden) der beteiligten Operatoren eindeutig geklammert werden (Details im Skript).

11 Ausdrucksbäume Klammerung ergibt Ausdrucksbaum: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

12 Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

13 Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

14 Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

15 Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

16 Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

17 Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

18 Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

19 Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

20 Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

21 Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

22 Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

23 Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

24 Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

25 Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

26 Auswertungsreihenfolge o Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet. Knoten Kinder

27 Auswertungsreihenfolge o Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet. Knoten Kinder

28 Auswertungsreihenfolge o Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet. Knoten Kinder

29 Auswertungsreihenfolge o Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet. Knoten Kinder

30 Auswertungsreihenfolge o Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet. Knoten Kinder In C++ ist die anzuwend- ende gültige Reihenfolge nicht spezifiziert.

31 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 Kinder In C++ ist die anzuwend- ende gültige Reihenfolge nicht spezifiziert.

32 Arithmetische Operatoren SymbolStelligkeitPräzedenzAssoziativität Unäres ++116rechts Unäres --116rechts Multiplikation*214links Division/214links Modulus%214links Addition+213links Subtraktion-213links Operand rechts

33 Arithmetische Operatoren SymbolStelligkeitPräzedenzAssoziativität Unäres ++116rechts Unäres --116rechts Multiplikation*214links Division/214links Modulus%214links Addition+213links Subtraktion-213links Alle Operatoren: R-Wert × R-Wert R-Wert

34 Division und Modulus o Operator / realisiert ganzzahlige Division:

35 Division und Modulus o Operator / realisiert ganzzahlige Division: o in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / : 15 degrees Celsius are 59 degrees Fahrenheit

36 Division und Modulus o Operator / realisiert ganzzahlige Division: o in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / : 15 degrees Celsius are 59 degrees Fahrenheit 9 / 5 * celsius + 32: 15 degrees Celsius are 47 degrees Fahrenheit

37 Division und Modulus o Operator / realisiert ganzzahlige Division: o in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / : 15 degrees Celsius are 59 degrees Fahrenheit 9 / 5 * celsius + 32: 15 degrees Celsius are 47 degrees Fahrenheit

38 Division und Modulus o Operator / realisiert ganzzahlige Division: o in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / : 15 degrees Celsius are 59 degrees Fahrenheit 1 * celsius + 32: 15 degrees Celsius are 47 degrees Fahrenheit

39 Division und Modulus o Operator / realisiert ganzzahlige Division: o in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / : 15 degrees Celsius are 59 degrees Fahrenheit 1 * : 15 degrees Celsius are 47 degrees Fahrenheit

40 Division und Modulus o Operator / realisiert ganzzahlige Division: o in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / : 15 degrees Celsius are 59 degrees Fahrenheit 47: 15 degrees Celsius are 47 degrees Fahrenheit

41 Division und Modulus o Modulus-Operator berechnet Rest der ganzzahligen Division 5 / 2 hat Wert 2 5 % 2 hat Wert 1

42 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

43 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

44 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

45 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

46 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

47 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

48 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

49 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 o expr wird zweimal ausgewertet (Effekte!) expr = expr + 1

50 In-/Dekrement-Operatoren GebrauchStelligkeitPräz.Assoz.L/R-Werte Post-Inkrementexpr++117linksL-Wert -> R-Wert Prä-Inkrement++expr116rechtsL-Wert -> L-Wert Post-Dekrementexpr--117linksL-Wert -> R-Wert Prä-Dekrement--expr116rechtsL-Wert-> L-Wert

51 In-/Dekrement-Operatoren GebrauchEffekt / Wert Post-Inkrementexpr++ Wert von expr wird um 1 erhöht, der alte Wert von expr wird (als R-Wert) zurückgegeben Prä-Inkrement++expr Wert von expr wird um 1 erhöht, der neue Wert von expr wird (als L-Wert) zurückgegeben Post-Dekrementexpr-- Wert von expr wird um 1 erniedrigt, der alte Wert von expr wird (als R-Wert) zurückgegeben Prä-Dekrement--expr Wert von expr wird um 1 erniedrigt, der neue Wert von expr wird (als L-Wert) zurückgegeben

52 In/Dekrement-Operatoren Beispiel: int a = 7; std::cout << ++a << "\n"; std::cout << a++ << "\n"; std::cout << a << "\n";

53 In/Dekrement-Operatoren Beispiel: int a = 7; std::cout << ++a << "\n"; // Ausgabe 8 std::cout << a++ << "\n"; std::cout << a << "\n";

54 In/Dekrement-Operatoren Beispiel: int a = 7; std::cout << ++a << "\n"; // Ausgabe 8 std::cout << a++ << "\n"; // Ausgabe 8 std::cout << a << "\n";

55 In/Dekrement-Operatoren Beispiel: int a = 7; std::cout << ++a << "\n"; // Ausgabe 8 std::cout << a++ << "\n"; // Ausgabe 8 std::cout << a << "\n"; // Ausgabe 9

56 In/Dekrement-Operatoren Ist die Anweisung ++expr; äquivalent zu expr++; ?

57 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)

58 Arithmetische Zuweisungen GebrauchBedeutung +=expr1 += expr2expr1 = expr1 + expr2 -=expr1 -= expr2expr1 = expr1 - expr2 *=expr1 *= expr2expr1 = expr1 * expr2 /=expr1 /= expr2expr1 = expr1 / expr2 %=expr1 %= expr2expr1 = expr1 % expr2

59 Arithmetische Zuweisungen GebrauchBedeutung +=expr1 += expr2expr1 = 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.

60 Wertebereich des Typs int o b-Bit-Repräsentierung: Wertebereich umfasst die ganzen Zahlen {-2 b-1, -2 b-1 +1,…, -1, 0, 1,…,2 b-1 -1}

61 Wertebereich des Typs int o b-Bit-Repräsentierung: Wertebereich umfasst die ganzen Zahlen {-2 b-1, -2 b-1 +1,…, -1, 0, 1,…,2 b-1 -1} o Auf den meisten Plattformen: b = 32

62 Wertebereich des Typs int // Program: limits.cpp // Output the smallest and the largest value of type int. #include int main() { std::cout << "Minimum int value is " ::min() << ".\n" << "Maximum int value is " ::max() << ".\n"; return 0; }

63 Wertebereich des Typs int // Program: limits.cpp // Output the smallest and the largest value of type int. #include int main() { std::cout << "Minimum int value is " ::min() << ".\n" << "Maximum int value is " ::max() << ".\n"; return 0; } z.B. Minimum int value is Maximum int value is

64 Überlauf und Unterlauf o Arithmetische Operationen (+, -, *) können aus dem Wertebereich herausführen o Ergebnisse können inkorrekt sein.

65 Überlauf und Unterlauf o Arithmetische Operationen (+, -, *) können aus dem Wertebereich herausführen o Ergebnisse können inkorrekt sein. power8.cpp: 15 8 = power20.cpp: 3 20 =

66 Ü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: 15 8 = power20.cpp: 3 20 =

67 Der Typ unsigned int o Wertebereich o Alle arithmetischen Operatoren gibt es auch für unsigned int o Literale: 1u, 17u,… {0, 1,…, 2 b -1}

68 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 u

69 Konversion int WertVorzeichen unsigned int Wert x 0x x< 0x + 2 b

70 Konversion int WertVorzeichen unsigned int Wert x 0x x< 0x + 2 b Bei Zweierkomplement-Darstellung passiert dabei intern gar nichts!

71 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)

72 Wahrheitswerte Boolesche Funktionen; der Typ bool ; logische und relationale Operatoren; Kurzschlussauswertung

73 Boolesche Funktionen o Boolesche Funktion: f: {0,1} n -> {0,1} o 0 enstpricht falsch o 1 entspricht wahr

74 Boolesche Funktionen o Boolesche Funktion: f: {0,1} 2 -> {0,1} o 0 enstpricht falsch o 1 entspricht wahr xyAND (x,y)

75 Boolesche Funktionen o Boolesche Funktion: f: {0,1} 2 -> {0,1} o 0 enstpricht falsch o 1 entspricht wahr xyOR (x,y)

76 Boolesche Funktionen o Boolesche Funktion: f: {0,1} 1 -> {0,1} o 0 enstpricht falsch o 1 entspricht wahr xNOT (x) 01 10

77 Vollständigkeit o AND, OR, NOT sind die in C++ verfügbaren Booleschen Funktionen o Alle anderen binären booleschen Funktionen sind daraus erzeugbar

78 Vollständigkeit o AND, OR, NOT sind die in C++ verfügbaren Booleschen Funktionen o Alle anderen binären booleschen Funktionen sind daraus erzeugbar xyXOR (x,y)

79 Vollständigkeit o AND, OR, NOT sind die in C++ verfügbaren Booleschen Funktionen o Alle anderen binären booleschen Funktionen sind daraus erzeugbar xyXOR (x,y) AND (OR (x,y), NOT (AND (x,y))) XOR (x,y) =

80 Vollständigkeit: Beweis o Identifiziere binäre boolesche Funktion mit ihrem charakteristischem Vektor:

81 Vollständigkeit: Beweis o Identifiziere binäre boolesche Funktion mit ihrem charakteristischem Vektor: xyXOR (x,y) Charakteristischer Vektor: 0110

82 Vollständigkeit: Beweis o Identifiziere binäre boolesche Funktion mit ihrem charakteristischem Vektor: xyXOR (x,y) Charakteristischer Vektor: 0110 XOR = f 0110

83 Vollständigkeit: Beweis o Schritt 1: erzeuge die Funktionen f 0001, f 0010, f 0100, f 1000

84 Vollständigkeit: Beweis o Schritt 1: erzeuge die Funktionen f 0001, f 0010, f 0100, f 1000 f 0001 = AND (x, y)

85 Vollständigkeit: Beweis o Schritt 1: erzeuge die Funktionen f 0001, f 0010, f 0100, f 1000 f 0001 = AND (x, y) f 0010 = AND (x, NOT (y))

86 Vollständigkeit: Beweis o Schritt 1: erzeuge die Funktionen f 0001, f 0010, f 0100, f 1000 f 0001 = AND (x, y) f 0010 = AND (x, NOT (y)) f 0100 = AND (y, NOT (x))

87 Vollständigkeit: Beweis o Schritt 1: erzeuge die Funktionen f 0001, f 0010, f 0100, f 1000 f 0001 = AND (x, y) f 0010 = AND (x, NOT (y)) f 0100 = AND (y, NOT (x)) f 1000 = NOT (OR (x, y))

88 Vollständigkeit: Beweis o Schritt 2: erzeuge alle Funktionen f 1101 = OR (f 1000, OR (f 0100, f 0001 ))

89 Vollständigkeit: Beweis o Schritt 2: erzeuge alle Funktionen f 1101 = OR (f 1000, OR (f 0100, f 0001 )) f 0000 = 0

90 Der Typ bool o Repräsentiert Wahrheitswerte o Literale true und false o Wertebereich {true, false}

91 Der Typ bool o Repräsentiert Wahrheitswerte o Literale true und false o Wertebereich {true, false} bool b = true; // Variable mit Wert true

92 bool vs. int: Konversion bool s können überall dort verwendet werden, wo int s gefordert sind, und umgekehrt

93 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

94 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

95 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

96 Logische Operatoren SymbolStelligkeitPräzedenzAssoziativität Logisches Und (AND)&&26links Logisches Oder (OR)||25links Logisches Nicht (NOT)!116rechts

97 Logische Operatoren SymbolStelligkeitPräzedenzAssoziativität Logisches Und (AND)&&26links Logisches Oder (OR)||25links Logisches Nicht (NOT)!116rechts bool (× bool) -> bool

98 Logische Operatoren SymbolStelligkeitPräzedenzAssoziativität Logisches Und (AND)&&26links Logisches Oder (OR)||25links Logisches Nicht (NOT)!116rechts bool (× bool) -> bool R-Wert (× R-Wert) -> R-Wert

99 Relationale Operatoren SymbolStelligkeitPräzedenzAssoziativität Kleiner<211links Grösser>211links Kleiner oder gleich<=211links Grösser oder gleich>=211links Gleich==210links Ungleich!=210links

100 Relationale Operatoren SymbolStelligkeitPräzedenzAssoziativität Kleiner<211links Grösser>211links Kleiner oder gleich<=211links Grösser oder gleich>=211links Gleich==210links Ungleich!=210links Zahlentyp × Zahlentyp -> bool

101 Relationale Operatoren SymbolStelligkeitPräzedenzAssoziativität Kleiner<211links Grösser>211links Kleiner oder gleich<=211links Grösser oder gleich>=211links Gleich==210links Ungleich!=210links Zahlentyp × Zahlentyp -> bool R-Wert × R-Wert -> R-Wert

102 DeMorgansche Regeln !(a && b) == (!a || !b) !(a || b) == (!a && !b)

103 DeMorgansche Regeln !(a && b) == (!a || !b) !(a || b) == (!a && !b) ! (reich und schön) == ( arm oder hässlich )

104 Präzedenzen Binäre arithmetische Operatoren binden stärker als Relationale Operatoren, und diese binden stärker als binäre logische Operatoren.

105 Präzedenzen Binäre arithmetische Operatoren binden stärker als Relationale Operatoren, und diese binden stärker als binäre logische Operatoren. 7 + x < y && y != 3 * z

106 Präzedenzen Binäre arithmetische Operatoren binden stärker als Relationale Operatoren, und diese binden stärker als binäre logische Operatoren. ((7 + x) < y) && (y != (3 * z))

107 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

108 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

109 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 X hat Wert 1:

110 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 X hat Wert 1:

111 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 > y X hat Wert 1:

112 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 > y X hat Wert 1:

113 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 X hat Wert 0:

114 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 X hat Wert 0:

115 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 > y X hat Wert 0:

116 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 X hat Wert 0:

117 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!


Herunterladen ppt "Ganze Zahlen Die Typen int, unsigned int ; Auswertung arithmetischer Aus- drücke, arithmetische Operatoren."

Ähnliche Präsentationen


Google-Anzeigen