Übersetzung in C++?



  • Hallo,

    ich bin gerade dabei mich mit locigal operators in c++ auseinanderzusetzen!

    Was bedeuten dann folgende Sachen genau? Kann es irgendwie noch nicht so richtig deuten :

    1. a>b || a!=c && b>c

    2. (ch == ’q’ || ch == ’Q’) && mouseButtonState != pressed

    3. x-y>0 && x != y && (x+y <=0 || x==y)

    bei 1) bedeutet es ja: " a ist größer als b oder a ist nich c und b ist größer als c" oder?

    Gruß

    Gustlbert



  • hi, zu 1 hast bi Recht zu 2 für mich sieht es nach winapi aus, also Windows, vermutlich eine Prüfung nach ob q oder Q gedruckt würde.



    1. scheint ziemlicher Unsinn zu sein, zuerst wird verlangt dass x>y, dann dass x!=y, was ja erstere Bedingung schon überprüft, und dann wird wieder gefragt ob x==y.^^


  • gustlbert schrieb:

    Hallo,

    ich bin gerade dabei mich mit locigal operators in c++ auseinanderzusetzen!

    Was bedeuten dann folgende Sachen genau? Kann es irgendwie noch nicht so richtig deuten :

    1. a>b || a!=c && b>c

    (a ungleich c und b grösser c) oder a grösser b
    Beachte hier, dass && stärker bindet als ||.

    1. (ch == ’q’ || ch == ’Q’) && mouseButtonState != pressed

    ch muss 'q' oder 'Q' sein und mousebuttonState ungleich pressed.

    1. x-y>0 && x != y && (x+y <=0 || x==y)

    Beachte hier einfach was wohin gehört:
    (x-y>0) && (x != y) && ( (x+y) <=0 || x==y)

    Ist das klar oder was verstehst du nicht?



  • Okay Vielen Dank!
    Aber wo beginnt man dann bei 3) zu lesen, wenn && stärker bindet als || ?
    Weil übersetzt macht 3) für mich irgendwie nicht viel sinn!

    (x-y größer als 0 und x ungleich y) und (x+y kleiner gleich 0 oder x=y)?
    aber man hat ja davor x ungleich y definiert und danach setzt man beide variablen gleich?!



  • gustlbert schrieb:

    Okay Vielen Dank!
    Aber wo beginnt man dann bei 3) zu lesen, wenn && stärker bindet als || ?
    Weil übersetzt macht 3) für mich irgendwie nicht viel sinn!

    Du kannst das so lesen: entweder (a>b) ODER ( a!=c UND b>c)
    beachte, dass &&(logisch UND) stärker bindet, daher die Klammersetzung!

    gustlbert schrieb:

    (x-y größer als 0 und x ungleich y) und (x+y kleiner gleich 0 oder x=y)?
    aber man hat ja davor x ungleich y definiert und danach setzt man beide variablen gleich?!

    1. x-y>0 && x != y && (x+y <=0 || x==y)

    beachte hier wieder:

    x-y>0 muss zutreffen UND x!=y muss zutreffen UND (x+y<=0 muss zutreffen ODER x==y muss zutreffen)

    [EDIT]: Man hat nicht x ungleich y definiert, du überprüfst lediglich, ob x ungleich y ist! bei x==y überprüfst du, ob x gleich groß wie y ist!



  • Eigentlich heißt es ja nur -y>=x>y. Das ist beispielsweise für x=0, y=-1 erfüllt.


Anmelden zum Antworten