Ganze zahlen
This presentation is the property of its rightful owner.
Sponsored Links
1 / 117

Ganze Zahlen PowerPoint PPT Presentation


  • 51 Views
  • Uploaded on
  • Presentation posted in: General

Ganze Zahlen. Die Typen int , unsigned int ; Auswertung arithmetischer Aus-drücke, arithmetische Operatoren. Celsius to Fahrenheit. // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit. #include <iostream> int main() { // Input

Download Presentation

Ganze Zahlen

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Ganze zahlen

Ganze Zahlen

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


Celsius to fahrenheit

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;

}


Celsius to fahrenheit1

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.


9 celsius 5 32

9 * celsius / 5 + 32

  • arithmetischer Ausdruck

  • enthält drei Literale, eine Variable, drei Operatorsymbole


9 celsius 5 321

9 * celsius / 5 + 32

  • arithmetischer Ausdruck

  • enthält drei Literale, eine Variable, drei Operatorsymbole

    Wie ist der Ausdruck geklammert?


Assoziativit t und pr zedenz

Assoziativität und Präzedenz

9 * celsius / 5 + 32

bedeutet

(9 * celsius / 5) + 32

Regel 1: Punkt- vor Strichrechnung


Assoziativit t und pr zedenz1

Assoziativität und Präzedenz

(9 * celsius / 5) + 32

bedeutet

((9 * celsius) / 5) + 32

Regel 2: Von links nach rechts


Assoziativit t und pr zedenz2

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


Assoziativit t und pr zedenz3

Assoziativität und Präzedenz

-3 - 4

bedeutet

(-3) - 4

Regel 3: Unäre +,- vor binären +,-


Assoziativit t und pr zedenz4

Assoziativität und Präzedenz

Jeder Ausdruck kann mit Hilfe der

  • Assoziativitäten

  • Präzedenzen

  • Stelligkeiten (Anzahl Operanden)

    der beteiligten Operatoren eindeutig

    geklammert werden (Details im Skript).


Ausdrucksb ume

Ausdrucksbäume

Klammerung ergibt Ausdrucksbaum:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge

Auswertungsreihenfolge

Von oben nach unten im Ausdrucksbaum:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge1

Auswertungsreihenfolge

Von oben nach unten im Ausdrucksbaum:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge2

Auswertungsreihenfolge

Von oben nach unten im Ausdrucksbaum:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge3

Auswertungsreihenfolge

Von oben nach unten im Ausdrucksbaum:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge4

Auswertungsreihenfolge

Von oben nach unten im Ausdrucksbaum:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge5

Auswertungsreihenfolge

Von oben nach unten im Ausdrucksbaum:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge6

Auswertungsreihenfolge

Von oben nach unten im Ausdrucksbaum:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge7

Auswertungsreihenfolge

Reihenfolge ist nicht eindeutig bestimmt:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge8

Auswertungsreihenfolge

Reihenfolge ist nicht eindeutig bestimmt:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge9

Auswertungsreihenfolge

Reihenfolge ist nicht eindeutig bestimmt:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge10

Auswertungsreihenfolge

Reihenfolge ist nicht eindeutig bestimmt:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge11

Auswertungsreihenfolge

Reihenfolge ist nicht eindeutig bestimmt:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge12

Auswertungsreihenfolge

Reihenfolge ist nicht eindeutig bestimmt:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge13

Auswertungsreihenfolge

Reihenfolge ist nicht eindeutig bestimmt:

9 * celsius / 5 + 32

9 * celsius

(9 * celsius) / 5

((9 * celsius) / 5) + 32


Auswertungsreihenfolge14

Auswertungsreihenfolge

  • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.

Kinder

Knoten


Auswertungsreihenfolge15

Auswertungsreihenfolge

  • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.

Kinder

Knoten


Auswertungsreihenfolge16

Auswertungsreihenfolge

  • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.

Kinder

Knoten


Auswertungsreihenfolge17

Auswertungsreihenfolge

  • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.

Kinder

Knoten


Auswertungsreihenfolge18

Auswertungsreihenfolge

  • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.

Kinder

In C++ ist die anzuwend-ende gültige Reihenfolge nicht spezifiziert.

Knoten


Auswertungsreihenfolge19

Auswertungsreihenfolge

  • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet.

  • “Guter” Ausdruck: jede gültige Reihen- folge führt zum gleichen Ergebnis

Kinder

In C++ ist die anzuwend-ende gültige Reihenfolge nicht spezifiziert.

Knoten


Arithmetische operatoren

Arithmetische Operatoren

Operand rechts


Arithmetische operatoren1

Arithmetische Operatoren

Alle Operatoren: R-Wert × R-Wert R-Wert


Division und modulus

Division und Modulus

  • Operator / realisiert ganzzahlige Division:


Division und modulus1

Division und Modulus

  • Operator / realisiert ganzzahlige Division:

  • in fahrenheit.C:

5 / 2 hat Wert 2

9 * celsius / 5 + 32:

15 degrees Celsius are 59 degrees Fahrenheit


Division und modulus2

Division und Modulus

  • Operator / realisiert ganzzahlige Division:

  • 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


Division und modulus3

Division und Modulus

  • Operator / realisiert ganzzahlige Division:

  • 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


Division und modulus4

Division und Modulus

  • Operator / realisiert ganzzahlige Division:

  • 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


Division und modulus5

Division und Modulus

  • Operator / realisiert ganzzahlige Division:

  • 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


Division und modulus6

Division und Modulus

  • Operator / realisiert ganzzahlige Division:

  • 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


Division und modulus7

Division und Modulus

  • Modulus-Operator berechnet Rest der ganzzahligen Division

5 / 2 hat Wert 2

5 % 2 hat Wert 1


Division und modulus8

Division und Modulus

  • Modulus-Operator berechnet Rest der ganzzahligen Division

  • Es gilt immer:

5 / 2 hat Wert 2

5 % 2 hat Wert 1

(a / b) * b + a % b hat den Wert von a


Division und modulus9

Division und Modulus

  • Modulus-Operator berechnet Rest der ganzzahligen Division

  • Es gilt immer:

  • 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


Division und modulus10

Division und Modulus

  • Modulus-Operator berechnet Rest der ganzzahligen Division

  • Es gilt immer:

  • Falls a oder b negativ, so gibt es zwei Möglichkeiten:

5 / 2 hat Wert 2

(a / b) * b + a % b hat den Wert von a

-5 / 2 hat Wert -2

-5 % 2 hat Wert -1

Rundung gegen 0


Division und modulus11

Division und Modulus

  • Modulus-Operator berechnet Rest der ganzzahligen Division

  • Es gilt immer:

  • Falls a oder b negativ, so gibt es zwei Möglichkeiten:

5 / 2 hat Wert 2

(a / b) * b + a % b hat den Wert von a

-5 / 2 hat Wert -3

-5 % 2 hat Wert 1

Rundung gegen unendlich


Division und modulus12

Division und Modulus

  • Modulus-Operator berechnet Rest der ganzzahligen Division

  • Es gilt immer:

  • 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


Inkrement und dekrement

Inkrement und Dekrement

  • Erhöhen / Erniedrigen einer Zahl um 1 ist eine häufige Operation

  • geht für einen L-Wert so:

expr = expr + 1


Inkrement und dekrement1

Inkrement und Dekrement

  • Erhöhen / Erniedrigen einer Zahl um 1 ist eine häufige Operation

  • geht für einen L-Wert so:

  • Nachteile:

    • relativ lang

expr = expr + 1


Inkrement und dekrement2

Inkrement und Dekrement

  • Erhöhen / Erniedrigen einer Zahl um 1 ist eine häufige Operation

  • geht für einen L-Wert so:

  • Nachteile:

    • relativ lang

    • expr wird zweimal ausgewertet (Effekte!)

expr = expr + 1


In dekrement operatoren

In-/Dekrement-Operatoren


In dekrement operatoren1

In-/Dekrement-Operatoren


In dekrement operatoren2

In/Dekrement-Operatoren

Beispiel:

int a = 7;

std::cout << ++a << "\n";

std::cout << a++ << "\n";

std::cout << a << "\n";


In dekrement operatoren3

In/Dekrement-Operatoren

Beispiel:

int a = 7;

std::cout << ++a << "\n"; // Ausgabe 8

std::cout << a++ << "\n";

std::cout << a << "\n";


In dekrement operatoren4

In/Dekrement-Operatoren

Beispiel:

int a = 7;

std::cout << ++a << "\n"; // Ausgabe 8

std::cout << a++ << "\n"; // Ausgabe 8

std::cout << a << "\n";


In dekrement operatoren5

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


In dekrement operatoren6

In/Dekrement-Operatoren

Ist die Anweisung

++expr;

äquivalent zu

expr++; ?


In dekrement operatoren7

In/Dekrement-Operatoren

Ist die Anweisung

++expr;

äquivalent zu

expr++; ?

  • Ja, aber…

    • Prä-Inkrement ist effizienter (alter Wert muss nicht gespeichert werden)

    • Post-In/Dekrement sind die einzigen linksasso-ziativen unärern Operatoren (nicht sehr intuitiv)


Arithmetische zuweisungen

Arithmetische Zuweisungen


Arithmetische zuweisungen1

Arithmetische Zuweisungen

Arithmetische Zuweisungen werten expr1 nur einmal aus.


Wertebereich des typs int

Wertebereich des Typs int

  • b-Bit-Repräsentierung: Wertebereich umfasst die ganzen Zahlen

    {-2b-1, -2b-1+1,…, -1, 0, 1,…,2b-1-1}


Wertebereich des typs int1

Wertebereich des Typs int

  • b-Bit-Repräsentierung: Wertebereich umfasst die ganzen Zahlen

    {-2b-1, -2b-1+1,…, -1, 0, 1,…,2b-1-1}

  • Auf den meisten Plattformen: b = 32


Wertebereich des typs int2

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;

}


Wertebereich des typs int3

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


Berlauf und unterlauf

Überlauf und Unterlauf

  • Arithmetische Operationen (+, -, *) können aus dem Wertebereich herausführen

  • Ergebnisse können inkorrekt sein.


Berlauf und unterlauf1

Überlauf und Unterlauf

  • Arithmetische Operationen (+, -, *) können aus dem Wertebereich herausführen

  • Ergebnisse können inkorrekt sein.

power8.cpp: 158 = -1732076671

power20.cpp: 320 = -808182895


Berlauf und unterlauf2

Überlauf und Unterlauf

  • Arithmetische Operationen (+, -, *) können aus dem Wertebereich herausführen

  • Ergebnisse können inkorrekt sein.

  • Es gibt keine Fehlermeldung!

power8.cpp: 158 = -1732076671

power20.cpp: 320 = -808182895


Der typ unsigned int

Der Typ unsigned int

  • Wertebereich

  • Alle arithmetischen Operatoren gibt es auch für unsigned int

  • Literale: 1u, 17u,…

{0, 1,…, 2b-1}


Gemischte ausdr cke

Gemischte Ausdrücke

  • Operatoren können Operanden verschiedener Typen haben (z.B. int und unsigned int

  • Solche gemischten Ausdrücke sind vom “allgemeineren” Typ unsigned int

  • int-Operanden werden konvertiert nach unsigned int

17 + 17u


Konversion

Konversion


Konversion1

Konversion

Bei Zweierkomplement-Darstellung passiert dabei intern gar nichts!


Konversion andersherum

Konversion “andersherum”

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


Wahrheitswerte

Wahrheitswerte

Boole’sche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung


Boole sche funktionen

Boole’sche Funktionen

  • Boole’sche Funktion:

    f: {0,1}n -> {0,1}

  • 0 enstpricht “falsch”

  • 1 entspricht “wahr”


Boole sche funktionen1

Boole’sche Funktionen

  • Boole’sche Funktion:

    f: {0,1}2 -> {0,1}

  • 0 enstpricht “falsch”

  • 1 entspricht “wahr”


Boole sche funktionen2

Boole’sche Funktionen

  • Boole’sche Funktion:

    f: {0,1}2 -> {0,1}

  • 0 enstpricht “falsch”

  • 1 entspricht “wahr”


Boole sche funktionen3

Boole’sche Funktionen

  • Boole’sche Funktion:

    f: {0,1}1 -> {0,1}

  • 0 enstpricht “falsch”

  • 1 entspricht “wahr”


Vollst ndigkeit

Vollständigkeit

  • AND, OR, NOT sind die in C++ verfügbaren Boole’schen Funktionen

  • Alle anderen binären boole’schen Funktionen sind daraus erzeugbar


Vollst ndigkeit1

Vollständigkeit

  • AND, OR, NOT sind die in C++ verfügbaren Boole’schen Funktionen

  • Alle anderen binären boole’schen Funktionen sind daraus erzeugbar


Vollst ndigkeit2

Vollständigkeit

  • AND, OR, NOT sind die in C++ verfügbaren Boole’schen Funktionen

  • Alle anderen binären boole’schen Funktionen sind daraus erzeugbar

XOR (x,y) =

AND (OR (x,y), NOT (AND (x,y)))


Vollst ndigkeit beweis

Vollständigkeit: Beweis

  • Identifiziere binäre boole’sche Funktion mit ihrem charakteristischem Vektor:


Vollst ndigkeit beweis1

Vollständigkeit: Beweis

  • Identifiziere binäre boole’sche Funktion mit ihrem charakteristischem Vektor:

Charakteristischer Vektor: 0110


Vollst ndigkeit beweis2

Vollständigkeit: Beweis

  • Identifiziere binäre boole’sche Funktion mit ihrem charakteristischem Vektor:

Charakteristischer Vektor: 0110

XOR = f0110


Vollst ndigkeit beweis3

Vollständigkeit: Beweis

  • Schritt 1: erzeuge die Funktionen f0001, f0010, f0100, f1000


Vollst ndigkeit beweis4

Vollständigkeit: Beweis

  • Schritt 1: erzeuge die Funktionen f0001, f0010, f0100, f1000

    f0001 = AND (x, y)


Vollst ndigkeit beweis5

Vollständigkeit: Beweis

  • Schritt 1: erzeuge die Funktionen f0001, f0010, f0100, f1000

    f0001 = AND (x, y)

    f0010 = AND (x, NOT (y))


Vollst ndigkeit beweis6

Vollständigkeit: Beweis

  • Schritt 1: erzeuge die Funktionen f0001, f0010, f0100, f1000

    f0001 = AND (x, y)

    f0010 = AND (x, NOT (y))

    f0100 = AND (y, NOT (x))


Vollst ndigkeit beweis7

Vollständigkeit: Beweis

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


Vollst ndigkeit beweis8

Vollständigkeit: Beweis

  • Schritt 2: erzeuge alle Funktionen

    f1101 = OR (f1000, OR (f0100,f0001))


Vollst ndigkeit beweis9

Vollständigkeit: Beweis

  • Schritt 2: erzeuge alle Funktionen

    f1101 = OR (f1000, OR (f0100,f0001))

    f0000 = 0


Der typ bool

Der Typ bool

  • Repräsentiert Wahrheitswerte

  • Literale true und false

  • Wertebereich{true, false}


Der typ bool1

Der Typ bool

  • Repräsentiert Wahrheitswerte

  • Literale true und false

  • Wertebereich{true, false}

bool b = true; // Variable mit Wert true


Bool vs int konversion

bool vs. int: Konversion

  • bool’s können überall dort verwendet werden, wo int’sgefordert sind, und umgekehrt


Bool vs int konversion1

bool vs. int: Konversion

  • bool’s können überall dort verwendet werden, wo int’sgefordert sind, und umgekehrt


Bool vs int konversion2

bool vs. int: Konversion

  • bool’s können überall dort verwendet werden, wo int’sgefordert sind, und umgekehrt


Bool vs int konversion3

bool vs. int: Konversion

  • Existierende Programme verwenden oft keine bool’s, sondern nur die int’s 0 und 1; das ist aber schlechter Stil.


Logische operatoren

Logische Operatoren


Logische operatoren1

Logische Operatoren

bool (× bool) -> bool


Logische operatoren2

Logische Operatoren

bool (× bool) -> bool

R-Wert (× R-Wert) -> R-Wert


Relationale operatoren

Relationale Operatoren


Relationale operatoren1

Relationale Operatoren

Zahlentyp × Zahlentyp -> bool


Relationale operatoren2

Relationale Operatoren

Zahlentyp × Zahlentyp -> bool

R-Wert × R-Wert -> R-Wert


Demorgan sche regeln

DeMorgan’sche Regeln

  • !(a && b) == (!a || !b)

  • !(a || b) == (!a && !b)


Demorgan sche regeln1

DeMorgan’sche Regeln

  • !(a && b) == (!a || !b)

  • !(a || b) == (!a && !b)

! (reichundschön) == ( arm oderhässlich )


Pr zedenzen

Präzedenzen

Binäre arithmetischeOperatoren

binden stärker als

Relationale Operatoren,

und diese binden stärker als

binäre logischeOperatoren.


Pr zedenzen1

Präzedenzen

Binäre arithmetischeOperatoren

binden stärker als

Relationale Operatoren,

und diese binden stärker als

binäre logischeOperatoren.

7 + x < y && y != 3 * z


Pr zedenzen2

Präzedenzen

Binäre arithmetischeOperatoren

binden stärker als

Relationale Operatoren,

und diese binden stärker als

binäre logischeOperatoren.

((7 + x) < y) && (y != (3 * z))


Kurzschlussauswertung

Kurzschlussauswertung

  • Logische Operatoren && und ||werten den linken Operanden zuerst aus

  • Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet


Kurzschlussauswertung1

Kurzschlussauswertung

  • Logische Operatoren && und ||werten den linken Operanden zuerst aus

  • Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet

x != 0 && z / x > y


Kurzschlussauswertung2

Kurzschlussauswertung

  • Logische Operatoren && und ||werten den linken Operanden zuerst aus

  • Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet

X hat Wert 1:

x != 0 && z / x > y


Kurzschlussauswertung3

Kurzschlussauswertung

  • Logische Operatoren && und ||werten den linken Operanden zuerst aus

  • Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet

X hat Wert 1:

x != 0 && z / x > y


Kurzschlussauswertung4

Kurzschlussauswertung

  • Logische Operatoren && und ||werten den linken Operanden zuerst aus

  • Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet

X hat Wert 1:

true && z / x > y


Kurzschlussauswertung5

Kurzschlussauswertung

  • Logische Operatoren && und ||werten den linken Operanden zuerst aus

  • Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet

X hat Wert 1:

true && z / x > y


Kurzschlussauswertung6

Kurzschlussauswertung

  • Logische Operatoren && und ||werten den linken Operanden zuerst aus

  • Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet

X hat Wert 0:

x != 0 && z / x > y


Kurzschlussauswertung7

Kurzschlussauswertung

  • Logische Operatoren && und ||werten den linken Operanden zuerst aus

  • Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet

X hat Wert 0:

x != 0 && z / x > y


Kurzschlussauswertung8

Kurzschlussauswertung

  • Logische Operatoren && und ||werten den linken Operanden zuerst aus

  • Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet

X hat Wert 0:

false && z / x > y


Kurzschlussauswertung9

Kurzschlussauswertung

  • Logische Operatoren && und ||werten den linken Operanden zuerst aus

  • Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet

X hat Wert 0:

false


Kurzschlussauswertung10

Kurzschlussauswertung

  • Logische Operatoren && und ||werten den linken Operanden zuerst aus

  • Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet

x != 0 && z / x > y

keine Division durch Null!


  • Login