if Anweisung mit Und/Oder Bedingungen



  • Hi, für eine if Anweisung, die ausgeführt wird, wenn eine der folgenden Bedingungen zutrifft, müsste ja gelten:

    if (Status3 == 1 || Status4 == 1 || Status5 == 1 || Status6 == 1)
    {
    "dothisandthat"
    }
    

    --> In diesem Fall wird die if Anweisung aber nur ausgeführt wenn eine der Bedingungen zutrifft (ODER Verknüpfung).
    Nun müsste ich aber wissen wie ich die Bedingungen verknüpfe, sodass die if Anweisung ausgeführt wird, wenn eine, zwei, drei und/oder alle vier der Bedingunen zutreffen?

    Gruß


  • Mod

    Chaka schrieb:

    --> In diesem Fall wird die if Anweisung aber nur ausgeführt wenn eine der Bedingungen zutrifft (ODER Verknüpfung).

    Nein,das ist nicht die ODER-Verknüpfung, du beschreibst XOR (Welches man sich in C++ selber basteln muss aus UND, ODER und NICHT oder durch geschickten Einsatz des bitweisen XORs ^ ).

    Oder kurz gesagt: Du hast schon das, was du suchst.



  • Ah, super. Danke für die Info. 🙂



  • SeppJ schrieb:

    XOR (Welches man sich in C++ selber basteln muss aus UND, ODER und NICHT oder durch geschickten Einsatz des bitweisen XORs ^ ).

    Oder durch geschickten Einsatz des != Operators 😉



  • hustbaer schrieb:

    SeppJ schrieb:

    XOR (Welches man sich in C++ selber basteln muss aus UND, ODER und NICHT oder durch geschickten Einsatz des bitweisen XORs ^ ).

    Oder durch geschickten Einsatz des != Operators 😉

    Meinst du so ?

    if( (Status3 + Status 4 + Status5 + Status6) == 1 ) {
    }
    

    Da sehe ich aber kein != 😕



  • pyhax schrieb:

    hustbaer schrieb:

    SeppJ schrieb:

    XOR (Welches man sich in C++ selber basteln muss aus UND, ODER und NICHT oder durch geschickten Einsatz des bitweisen XORs ^ ).

    Oder durch geschickten Einsatz des != Operators 😉

    Meinst du so ?

    if( (Status3 + Status 4 + Status5 + Status6) == 1 ) {
    }
    

    Da sehe ich aber kein != 😕

    bool bStatus1 = false, bStatus2 = true, bStatus3 = false;
    if( (bStatus1 + bStatus2 4 + bStatus3 ) == 1 ) {
    }
    

    Da Funktioniert dein Weg dann nicht mehr. Meiner bescheidenen Meinung nach sollten nur explizite bool Werte als Vergleich dienen in IF Anweisungen.

    Das macht Änderungen im Nachhinein einfacherer. Die Logik dahinter lässt sich dann auch leichter verstehen.


  • Mod

    pyhax schrieb:

    hustbaer schrieb:

    SeppJ schrieb:

    XOR (Welches man sich in C++ selber basteln muss aus UND, ODER und NICHT oder durch geschickten Einsatz des bitweisen XORs ^ ).

    Oder durch geschickten Einsatz des != Operators 😉

    Meinst du so ?

    if( (Status3 + Status 4 + Status5 + Status6) == 1 ) {
    }
    

    Da sehe ich aber kein != 😕

    Er meint dort, wo man "UND NICHT X == Y" schreiben würde, "UND X!=Y" zu schreiben. Was ich eigentlich auch so gemeint hatte. Wie man das NICHT ausschreibt ist mir herzlich egal, jedenfalls braucht man auf irgendeine Weise, dass ein 0 zu 1 wird, wenn man XOR aus den logischen Verknüpfungen in C++ zusammensetzen möchte. Wie man das dann hinschreibt, ist mir herzlich egal.

    Deine Lösung gefällt mir nicht sehr, da sie mir zu viele Annahmen über die möglichen Werte der Stati macht. Und da du Arithmetik in eine Logikaufgabe bringst.



  • SeppJ schrieb:

    Er meint dort, wo man "UND NICHT X == Y" schreiben würde, "UND X!=Y" zu schreiben.

    Ja? Ich hätte jetzt statt cond1 XOR cond2 gesagt: cond1 != cond2 (was natürlich voraussetzt, dass beide Seiten boolsch sind).

    Stati

    Den richtigen Plural "Status" kann man zwar im Schriftdeutsch ziemlich knicken, aber dafür muss man keine falschen einführen 😉



  • Michael E. schrieb:

    Stati

    Den richtigen Plural "Status" kann man zwar im Schriftdeutsch ziemlich knicken, aber dafür muss man keine falschen einführen 😉

    Genau wie die Mz. von Jesus auch Jesus (mit langem u) ist und nicht Jesi. Sic.



  • EOP schrieb:

    Genau wie die Mz. von Jesus auch Jesus (mit langem u) ist und nicht Jesi. Sic.

    Da gabs noch mehr von? Gott bewahre uns!



  • if( Status3 == 1 && Status4 == 1 && Status5 == 1 && Status6 == 1 )
    {
    "dothisandthat"
    }
    

    Müsste es dann nich so aussehen?

    MfG



  • BlauBär schrieb:

    if( Status3 == 1 && Status4 == 1 && Status5 == 1 && Status6 == 1 )
    {
    "dothisandthat"
    }
    

    Müsste es dann nich so aussehen?

    MfG

    Wird nur ausgeführt wenn alle Bedingungen gleichzeitig erfüllt sind.


Anmelden zum Antworten