Autor Beitrag
bugmenot
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 24.07.15 20:48 
Ich möchte gerne eine If-Abfrage erstellen, bei der mehrere Bedingungen getrennt erfüllt sein sollen.
Erklärt:

Bis jetzt habe ich versucht:
ausblenden C#-Quelltext
1:
2:
3:
4:
if (Bedingung1 && Bedingung2 == true || Bedingung2 && Bedingung3 == true)
{
    mach irgendwas!
}

Dabei hat er "mach irgendwas!" auch ausgeführt, wenn die Bedingungen 1 und 3 beide true waren, während Bedingung 2 false war.

Wie kann ich also die Bedingungen "trennen"? Das "||" scheint ja nicht zu funktionieren...
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 24.07.15 21:50 
Ein Bedingung ist bereits ein boolscher Ausdruck und damit true oder false. Da brauch mann dann nicht mehr mit true oder false zu vergleichen die Bedingung ist bereits true oder false. Also einfach

ausblenden C#-Quelltext
1:
if ((Bedingung1 && Bedingung2) || (Bedingung2 && Bedingung3))					
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4805
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 25.07.15 07:16 
Hallo,

außerdem kommt es bei den Ausdrücken auch auf die Operatorpriorität an: == hat eine höhere Priorität als && und ||, weswegen der Ausdruck als
ausblenden C#-Quelltext
1:
if (Bedingung1 && (Bedingung2 == true) || Bedingung2 && (Bedingung3 == true))					

ausgewertet wird (daher dein Ergebnis).

Aufgrund der o.g. Operatorpriorität reicht es sogar, den Ausdruck von Ralf ohne Klammern als
ausblenden C#-Quelltext
1:
if (Bedingung1 && Bedingung2 || Bedingung2 && Bedingung3)					

zu schreiben (auch wenn es mit den Klammern lesbarer und verständlicher ist).
Und diesen kann man sogar aufgrund der De Morgansche Regeln zu
ausblenden C#-Quelltext
1:
if ((Bedingung1 || Bedingung3) && Bedingung2)					

verkürzen.

Für diesen Beitrag haben gedankt: Ralf Jansen