while & Rückgabe



  • Kann ich in einem while statement den Rückgabewert einer Funktion speichern?

    while(ReturnAValue())
    {
    }
    

    Das funktioniert.

    while(val = ReturnAValue())
    {
    }
    

    Das nicht.

    Wie kann ich den Rückgabewert der Funktion in val speichern und while funktioniert immer noch?

    atzplzw



  • beide varianten sollten von dir funktionieren so ReturnAValue() einen wert zurückliefert der sich irgendwie als ein boolchen ausdruck interpretieren lässt.. im zweiten fall merkst du dir den wert vom letzten aufruf der ReturnAValue funktion



  • Hallo,

    was soll da nicht funktionieren? Es ist völlig korrekt so, die while-Bedingung kann auch eine Zuweisung sein:

    while(val = ReturnAValue())
    {
    }
    

    Bleibt die Frage, was genau bei dir bedeutet "funktioniert nicht"?

    MfG



  • Ah! Bin mit dem debugger durch den Code gestept und hab nicht beachtet, dass die Funktion false zurück gibt, was dann natürlich heißt, das while nicht ausgeführt wird.

    Somit passt alles! Danke. Ist schon zu spät was?

    atzplzw



  • wenn du boolsche operatoren verwenden willst, geht das auch, aber du brauchst halt klammern:

    while((val = ReturnAValue())==0)
    {
    }
    

    mfG (c)h



  • @chille07,
    es geht aber auch so:

    while ( (val=ReturnAValue()) )
    while ( !(val=ReturnAValue()) )
    


  • nur...
    0 bedeutet FALSCH
    ALLES ANDERE bedeutet WAHR

    also.. sollte da nicht "==0" stehen sonder zB "==2",......

    mfG (c)h

    PS @Hermann:
    konntest dich nicht entscheiden welches WHILE stimmt? :p
    also.. solange nicht wahr ist.. also..

    while( !(val=ReturnAValue())){}
    


  • @chille07,
    war ja nur eine Möglichkeit sich das == X zu sparen. Funktioniert natürlich nur wenn die Funktion nur true/false zurückgibt. Bei atzplzw sieht es halt nach so einem Fall aus. War von mir ja auch mehr Klugscheißerei als ein wirklicher Beitrag 🙄



  • Genau genommen bräuchte man nicht einmal Klammern, doch manche Compiler warnen dann, weil sie denken, dass man nicht weiß was man tut.



  • Wooh! Was man doch über so ein eigentlich simples Thema philosophieren kann...

    Ja, die Funktion gibt bool zurück. Und ich hab einfach nur nicht beachtet, das sie in dem speziellen Fall false, also 0, zurückgegeben hat. Und da hat das while ja richtigerweise nicht funktioniert und das hat mich so spät in der Nacht verwirrt.

    atzplzw


Anmelden zum Antworten