Die if-Anweisung in C ++

Bei der Begegnung ob

Menu

, C ++ führt zuerst den logischen Ausdruck in den Klammern enthalten. Im folgenden Code, wertet das Programm den bedingten Ausdruck # 147-ist m größer als n.# 148;

if (m> n) // wenn m größer als n ... {// ... dann dieses Zeug tun}

Wenn der Ausdruck wahr, das heißt, wenn m wirklich größer ist als n, dann geht die Steuerung an die erste Anweisung nach dem {und von dort aus weiter. Wenn der logische Ausdruck nicht wahr ist, geht die Steuerung zu der ersten Anweisung nach der}.

Vergleichsoperatoren in C ++

Die Tabelle zeigt die verschiedenen Operatoren, die verwendet werden können Werte in logischen Ausdrücken zu vergleichen.

Binäre Operatoren haben das Format expr1 Betreiber ausdr2.

Die Vergleichsoperatoren
OperatorBedeutung
==gleichstellungs wahr, wenn der Ausdruck auf der linken Seite des "== 'hat den gleichen Wert wie der Ausdruck auf theright
!=inequality- gegenüber der Gleichheit
>als- wahr größer, wenn der linke, ist Hand Ausdruck größer thanthe auf der rechten Seite
lt;weniger als- true, wenn der linke, Hand Ausdruck weniger als theone auf der rechten Seite
> =größer oder gleich to true, wenn der linke, Hand Ausdruck ist größer als oder gleich dem auf der rechten Seite
le;weniger als oder gleich to true, wenn der linke, Hand Ausdruck ist mit dem auf der rechten Seite LessThan oder gleich

Sie nicht den Gleichheitsoperator (==) mit dem Zuweisungsoperator (=) verwechseln. Dies ist ein häufiger Fehler für Anfänger.

Folgende BranchDemo Programm zeigt, wie die Betreiber verwendet:

// BranchDemo - zeigen die if-Anweisung # include #einschließen #einschließen using namespace std-int main (int nNumberofArgs, char * pszArgs []) {// eingeben operand1 und nOperand1-int nOperand2-cout operand2int lt; lt; "Geben Sie Argument 1:" - cin >> nOperand1-cout lt; lt; "Geben Sie Argument 2:" - cin >> nOperand2 - // jetzt die resultsif (nOperand1> nOperand2) drucken {cout lt; lt; "Argument 1 größer ist als Argument 2" lt; lt; endl-} if (nOperand1 lt; nOperand2) {cout lt; lt; "Argument 1 kleiner als Argument 2" lt; lt; endl-} if (nOperand1 == nOperand2) {cout lt; lt; "Argument 1 gleich Argument 2" 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-}

Die Programmausführung beginnt mit Main() wie immer. Das Programm erklärt ersten beiden int Variablen schlaue Namen nOperand1 und nOperand2. Es fordert den Benutzer dann auf "Geben Sie Argument 1", das heißt es in nOperand1. Der Prozess wird wiederholt für nOperand2.

Das Programm führt dann eine Sequenz von drei Vergleiche. Es prüft zunächst, ob nOperand1 ist weniger als nOperand2. Wenn ja, gibt das Programm die Meldung "Argument 1 kleiner als Argument 2". Der Zweite ob Anweisung zeigt eine Nachricht, wenn die beiden Operanden den gleichen Wert. Der letzte Vergleich ist wahr, wenn nOperand1 ist größer als nOperand2.

Im Folgenden wird eine Probelauf der BranchDemo Programm:

Geben Sie Argument 1:5Geben Sie Argument 2:10Argument 1 ist kleiner als Argument 2Drücken Sie die Eingabetaste. . .

Die Abbildung zeigt den Ablauf der Steuerung grafisch für diesen Lauf.

bild0.jpg

Die Art und Weise der BranchDemo Programm geschrieben wird, werden alle drei Vergleiche werden jedes Mal durchgeführt wird. Dies ist etwas kostspielig, da die drei Bedingungen gegenseitig ausschließen. Beispielsweise, nOperand1> nOperand2 nicht wahr sein, wenn nOperand1 lt; nOperand2 wurde bereits als wahr herausgestellt.

Sagen # 147-No # 148- bis # 147-No Zahnspange # 148-

Eigentlich sind die Klammern optional. Ohne Klammern, nur der erste Ausdruck nach dem ob Aussage ist an Bedingungen geknüpft. Aber es ist viel zu leicht, einen Fehler auf diese Weise zu machen, wie im folgenden Ausschnitt gezeigt:

// Kann nicht ein negatives Alter haben. Wenn Alter kleiner als Null ist ... if (Nage lt; 0) cout lt; lt; "Alter darf nicht negativ mit 0" lt; lt; Endl-nage = 0 - // Programm wird fortgesetzt

Sie mögen denken, dass, wenn Nage dieses Programm Schnipsel kleiner als 0 ist, gibt eine Meldung aus und setzt Nage Null. In der Tat setzt das Programm Nage wie auch immer, egal, was den ursprünglichen Wert auf Null. Der vorstehende Schnipsel entspricht der folgenden:

// Kann nicht ein negatives Alter haben. Wenn Alter kleiner als Null ist ... if (Nage lt; 0) {cout lt; lt; "Alter darf nicht negativ mit 0" lt; lt; endl-} Nage = 0 - // Programm wird fortgesetzt

Es ist klar, aus den Kommentaren und dem Gedankenstrich, dass der Programmierer wirklich folgendes gemeint:

// Kann nicht ein negatives Alter haben. Wenn Alter kleiner als Null ist ... if (Nage lt; 0) {cout lt; lt; "Alter darf nicht negativ mit 0" lt; lt; Endl-nage = 0 -} // Programm wird fortgesetzt

Die C ++ Compiler kann nicht diese Art von Fehler zu fangen. Es ist nur sicherer, wenn Sie immer die Klammern liefern.

C ++ behandelt alle weißen Raum gleich. Sie ignoriert die Ausrichtung von Ausdrücken auf der Seite.

Verwenden Sie immer Klammern die Aussagen nach einer if-Anweisung zu umschließen, auch wenn es nur eine. Sie werden viel weniger Fehler, die Art und Weise erzeugen.

Menü