2016-08-03 11 views
6

Ich lerne C++ durch Sololearn. Unten ist ein Code, um die größte von zwei Zahlen zu finden.Funktion zum Finden der größten Nummer

#include <iostream> 
using namespace std; 

int max(int a, int b){ 

    if (a > b) { 
     return a; 
    } 

    return b; 
} 

int main() { 

    cout << max(7, 4) << endl; 
    return 0; 
} 

Ergebnis - 7

Aber sollte es nicht auch zurückgeben b da es Rückkehr b in Funktion ????

+1

In C, sobald Sie zurückkehren, können Sie nicht zurück ...der Rückgabewert a beendet die Ausführung der Max-Funktion – Gar

+1

Der Befehl 'return' beendet die Ausführung der Funktion: jeder Befehl nach einem Aufruf von' return' wird ignoriert. In Ihrem Fall, wenn a> b, erreichen Sie die erste Rückkehr und verlassen die Funktion, ignorieren die zweite Rückkehr. Sonst wird die erste Rückkehr nicht ausgeführt, was zur Ausführung der zweiten führt – wasthishelpful

Antwort

8

Nur eine return Anweisung wird innerhalb einer Funktion ausgeführt. Sobald der Code auf die erste return trifft, wird die Funktion sofort verlassen und es wird kein weiterer Code ausgeführt.

5

Die Antwort von CoryKramer sagt alles. Trotzdem die Verwirrung Sie in gestoßen zu vermeiden, würde ich es vorziehen:

#include <iostream> 
using namespace std; 

int max(int a, int b){ 

    if (a > b) { 
     return a; 
    } 
    else { 
     return b; 
    } 
} 

int main() { 

    cout << max(7, 4) << endl; 
    return 0; 
} 

Alternativ können Sie verwenden:

return a > b ? a : b; 

Letztere Linie ist eine so genannte ‚Bedingungsausdruck‘ (oder ‚Bedingungsoperator '). Wenn der Satz vor dem? ist wahr, es gibt den Teil zwischen den? und das:, sonst gibt es den Teil nach dem:.

Es wird ausführlich here erklärt.

+0

** zurück a> b? a: b; ** Können Sie diese Linie erklären? – Athul

+0

Ich habe es zu der Antwort hinzugefügt. –

2

if (a > b) (7> 4) ==>Bedingung wahr wird so return a ausgeführt und Max-Funktion Rückkehr von dort nur, es ist nicht erreichen b zurück, das ist, warum seine Rückkehr nicht b auszuführen.

2

Operator Rückkehr wird

die aktuelle Funktion beenden und gibt das Ergebnis des Ausdrucks an den Aufrufer

http://en.cppreference.com/w/cpp/language/return

Nachdem Sie den Zustand übergeben

if (a>b) 

bearbeitet -> Danke an athul return wird ausgewertet a und setzen Sie es als Ergebnis der Funktion.

Wenn ein geringerer dann b ist - Sie werden nicht diese Bedingung erfüllen, und Sie werden getroffen

return b; 

es zu verstehen, kann man hinzufügen:

cout << max(2, 4) << endl; 
cout << max(2, 1) << endl; 

in den Hauptteil.

PS ist es besser, zumindest Codeblöcke zu verwenden, die in LearnC wird empfohlen ++ ihre Beispiele geben

+1

@grindah ** Nachdem Sie die Bedingung bestanden haben, wird (a> b) return b bewerten und als Ergebnis der Funktion eingeben ** ----> Wenn die Bedingung erfüllt ist, wird die Rückmeldung ausgewertet ** a ** und stelle es als Ergebnis der Funktion, richtig ??? nicht ** b ** – Athul

+0

Sie haben Recht, mein Schlechter – grindaah

2

Sie in Rückkehr ein verwenden> b? a: b Betreiber.