Floats addieren in if Bedingung, was bewirkt das?



  • Hallo
    habe etwas im internet gestöbert und ein Projekt gefunden
    in dem etwa sowas stand:

    float x,y;
    
    x = 5;
    y = 7;
    
    if(x + y)
       //do sth.
    else
       // do sth. else
    

    was bewirkt das?
    es wird x + y addiert aber mit nichts verglichen o.O
    der compiler schmeist auch keinen fehler , ist sowas überhaupt möglich?
    in c# (ich portiere nach c# um) funzt es nämlich nicht so wie dort.. mir ist aber auch nich bekannt was da passieren soll bzw. was da die bedingung ist 😮

    wisst ihr was das ist?



  • Das ist das selbe wie

    if(x + y != 0)
    

    und das macht meistens keinen Sinn.



  • Ah okey vielen Dank, darauf bin ich garnicht gekommen.

    Danke sehr 🙂



  • otze schrieb:

    Das ist das selbe wie

    if(x + y != 0)
    

    und das macht meistens keinen Sinn.

    Aha..

    if( x +y )
    {
       double r = z / (x+y);
    }
    

    Trotzdem gefällt mir bei numerischen Werten der explizite Vergleich besser.



  • DocShoe schrieb:

    Aha..

    Ja und das macht auch nur scheisse. +-inf (vorzeichen von numerischen Fehler von x+y abhängig) ist auch nicht wirklich besser als nan.


Anmelden zum Antworten