[gelöst] Funktionen und if-Abfragen



  • Hi,

    ich habe mal wieder eine Frage, da ich dem C++ Primer nicht ganz folgen kann.
    Dort steht:

    A function terminates after executing a return statement. If a function has more than one return statemant - for example, as alternatives to different if else selections - the function terminates after it executes the first return statemant it reaches:

    int bitter(int a, int b)
    {
      if(a > b)
       return a; // if a > b, function terminates here
      else
       return b; // otherwise, function terminates here
    }
    

    Here the else isn't needed, but it does help the casual reader understand the intent.

    Und jetzt verstehe ich den letzten Satz einfach nicht.
    Die Beschreibung sagt, dass eine Funktion endet, wenn ein return erreicht ist. Ja aber bei einer if-Abfrage kann es doch sein, dass der Block nicht ausgeführt wird.
    Also wenn ich wie oben beschrieben das 'else' wegnehme und es gilt a < b, ja was passiert denn dann?
    Der if(a > b) Block wird nicht ausgeführt und das return b existiert nicht.

    Was macht die Funktion denn dann?

    Gruß,
    Klaus.



  • Klaus82 schrieb:

    ...

    Here the else isn't needed, but it does help the casual reader understand the intent.

    Also wenn ich wie oben beschrieben das 'else' wegnehme und es gilt a < b, ja was passiert denn dann?
    Der if(a > b) Block wird nicht ausgeführt und das return b existiert nicht.

    Das "else" ist unnötig, nicht das "return b":

    // Hier ohne das else
    int bitter(int a, int b)
    {
      if(a > b)
        return a;
      return b;
    }
    

    Das ist damit gemeint.



  • Mit "'else' wegnehmen" ist folgendes gemeint:

    int bitter(int a, int b)
    {
      if(a > b)
       return a; // if a > b, function terminates here
    
     return b; // otherwise, function terminates here
    }
    

    Und dies ist semantisch das gleiche wie mit 'else'.



  • Ach soooo.

    Sorry, dann macht das natürlich Sinn.

    Gruß,
    Klaus.


Anmelden zum Antworten