Nesting if-Anweisungen in C ++

In C ++, die Streben eines ob oder sonst Klausel kann eine andere enthalten ob Erklärung. Diese sind bekannt als verschachteltob Aussagen. Folgende NestedIf Programm zeigt ein Beispiel einer verschachtelten ob Anweisung in Gebrauch.

// NestedIf - zeigen eine verschachtelte if-Anweisung // # include #einschließen #einschließen using namespace std-int main (int nNumberofArgs, char * pszArgs []) {// geben Sie Ihre Geburt yearint Nyear-cout lt; lt; "Geben Sie Ihr Geburtsjahr:" -cin >> Nyear - // Stellen Bestimmung von centuryif (Nyear> 2000) {cout lt; lt; lt "Sie wurden im 21. Jahrhundert geboren"; lt; endl-} else {cout lt; lt; -Wenn (Nyear "Du hast in geboren" lt; 1950) {cout lt; lt; "Die erste Hälfte" -} else {cout lt; lt; "Die zweite Halbzeit" -} cout lt; lt; "Des 20. Jahrhunderts" lt; lt; Endl -} // warten, bis der Benutzer vor dem Beenden Programm bereit ist, // damit der Benutzer das Programm resultscout zu sehen lt; lt; "Drücken Sie die Eingabetaste, um fortzufahren ..." lt; lt; Endl-cin.ignore (10, ' n') - cin.get () - Rückkehr 0-}

Dieses Programm beginnt mit der für die Benutzer-Geburtsjahr zu fragen. Wenn das Geburtsjahr später als 2000 ist, dann gibt das Programm die Zeichenfolge "Sie wurden im 21. Jahrhundert geboren".

In mathematisch genauen Bedingungen gehört das Jahr 2000 bis zum 20. Jahrhundert, nicht das 21..

Wenn das Geburtsjahr nicht größer als 2000 ist, dann geht das Programm in die sonst Klausel der äußeren ob Erklärung. Diese Klausel beginnt mit der Zeichenfolge ausgibt "Du wurdest geboren in" vor dem Geburtsjahr 1950 zu vergleichen.

Wenn das Geburtsjahr weniger als 1950, dann fügt das Programm die erste "die erste Hälfte". Wenn das Geburtsjahr nicht weniger als 1950, dann ist die sonst Klausel des Innen ob Anweisung ausgeführt wird, die auf dem Begriff heftet "die zweite Hälfte". Schließlich fügt das Programm die abschließende Phrase "Des 20. Jahrhunderts" ausgegeben worden, so weit zu, was auch immer hat.

In der Praxis sieht die Ausgabe des Programms für drei mögliche Werte für Geburtsjahr folgt. Zuerst 2002 produziert das folgende:

Geben Sie Ihr Geburtsjahr: 2002Sie wurden im 21. centuryPress eingeben, um fortzufahren geboren. . .

Beispielsweise 1956 erzeugt die folgenden:

Geben Sie Ihr Geburtsjahr: 1956You in der zweiten Hälfte des 20. centuryPress geboren wurden Sie die Eingabetaste. . .

Schließlich erzeugt das Geburtsjahr 1932 die dritte Möglichkeit:

Geben Sie Ihr Geburtsjahr: 1932You in der ersten Hälfte des 20. centuryPress geboren wurden Sie die Eingabetaste. . .

Sie könnten eine verschachtelte verwenden ob die unnötige Vergleiche in der zu vermeiden NestedBranchDemo Programm:

if (nOperand1> nOperand2) {cout lt; lt; "Argument 1 größer ist als Argument 2" lt; lt; endl-} else {if (nOperand1 lt; nOperand2) {cout lt; lt; "Argument 1 kleiner als Argument 2" lt; lt; endl-} else {cout lt; lt; "Argument 1 gleich Argument 2" lt; lt; endl-}}

Diese Version führt den ersten Vergleich nach wie vor. Ob nOperand1 ist größer als nOperand2, Dieser Ausschnitt gibt die Zeichenkette "Argument 1 größer ist als Argument 2". Von hier jedoch springt die Steuerung auf die endgültige geschlossene Klammer, wodurch die verbleibenden Vergleiche zu überspringen.

Ob nOperand1 nicht größer als nOperand2, dann führt das Snippet einen zweiten Test, den Fall zu unterscheiden, nOperand1 ist weniger als nOperand2 von dem Fall, dass sie den gleichen Wert sind.

Die Figur zeigt graphisch den Fluss der Steuerung für die NestedBranchDemo Programm für die Eingabe von 5 und 10.

bild0.jpg

Die Durchführung der Test auf Gleichheit ist nicht notwendig: Wenn nOperand1 weder größer als noch weniger als nOperand2, es muß dann gleich sein.

Menü