Wozu else if



  • Hi, ich hab lange drueber nachgedacht und gegoogelt. Aber ich peils einfach nicht...wozu if else?

    Wenn man eine if bedingung stellt, und die eingabe trifft zu, dann wird sie erfuellt.
    Bei else if haargenau so.

    Also wozu?



  • Beispiel:

    if (foo % bar == 0) // Wenn foo teilbar durch bar
    	...
    if (foo == 5) // wenn foo gleich 5
    	...
    else // wenn foo nicht 5
    	...
    

    vs

    if (foo % bar == 0) // wenn foo teilbar durch bar
    	...
    else if (foo == 5) // wenn foo nicht teilbar durch bar und gleich 5
    	...
    else // wenn foo weder teilbar duch bar noch gleich 5
    	...
    


  • Es gibt kein "else if". Es gibt nur if und else. Schau:

    if( ... )
    else{
        if( ... )
        else{
            if( ... )
            else ...
        }
    }
    

    Es ist haargenau dasselbe, wenn du alle geschweiften Klammern wegnimmst.
    Wird es dir jetzt klarer?



  • manchmal kannste so code übersichtlicher und kürzer schreiben, z.b.

    if(kamel_hat_durchfall)
    {
    	kamel_kackt_heftig();
    }
    else
    {
    	if(kamel_hat_hunger)
    	{
    		kamel_frisst_gierig();
    	}
    }
    

    kannste auch so schreiben

    if(kamel_hat_durchfall)
    	kamel_kackt_heftig();
    else if(kamel_hat_hunger) 
    	kamel_frisst_gierig();
    


  • hier darfst du z.b. einige geschweifte klammern (zu if gehörenden) auf gar keinen fall weglassen:

    if(kamel_hat_durchfall)
    {
    	kamel_kackt_heftig();
    	kamel_guckt_doof_aus_der_wasche();
    }
    else
    {
    	if(kamel_hat_hunger)
    	{
    		kamel_frisst_gierig();
    		kamel_ruelpst();
    	}
    }
    
    kannste auch so schreiben
    
    if(kamel_hat_durchfall)
    {
    	kamel_kackt_heftig();
    	kamel_guckt_doof_aus_der_wasche();
    }
    else if(kamel_hat_hunger) 
    {
    	kamel_frisst_gierig();
    	kamel_ruelpst();
    }
    


  • kamelkacke schrieb:

    Wenn man eine if bedingung stellt, und die eingabe trifft zu, dann wird sie erfuellt.
    Bei else if haargenau so.

    Nein. Wenn die vorige Bedingung (das erste "if") erfüllt war, wird "else if" nicht geprüft:

    if (true)
      cout << "'true' ist erfüllt";
    else if (true)
      cout << "'true' ist immer noch erfüllt";  // wird nie aufgerufen
    

Anmelden zum Antworten