unsichere Verwendung des Typs 'bool'



  • Hallo! Ich bekomme folgende Warnung:

    warning C4804: '>' : unsichere Verwendung des Typs 'bool' in einer Operation

    wenn ich diesen code kompilieren will:

    if ((22 > punkte > bankPunkte) || (bankPunkte > 21))
    

    ich kann mir schon denken, dass es daran liegt, dass ich 2 mal > in einem Ausdruck verwendet hab. Also meine Frage: Warum protestiert der Compiler hier?
    Warum ist diese Verwendung "unsicher"?



  • a < b < c ist (a < b) < c. a < b ergibt entweder true oder false, also muss er als nächstes true < c oder false < c auswerten.



  • Weil unsicher ist, was du hier machen willst.

    22 > punkte ergibt ein bool, also 0 oder -1. (oder so)

    Jedenfalls wirst du diesen Wert dann mit bankPunkte vergleichen und das ist ganz bestimmt nicht im Sinne des Dus.

    MfG mAV

    PS: Mist, zu spät 😃



  • Wie will der Compiler denn einen bool wert mit einem int wert vergleichen?
    Und wie erreiche ich es, dass der Ausdruck das macht, was er soll (also eine a < b < c Beziehung wie in der Mathematik).



  • Schizzman schrieb:

    Wie will der Compiler denn einen bool wert mit einem int wert vergleichen?

    true == 1, false == 0

    Und wie erreiche ich es, dass der Ausdruck das macht, was er soll (also eine a < b < c Beziehung wie in der Mathematik).

    a < b && b < c
    ?


Anmelden zum Antworten