Vorrang
-
hallo forum
ich grüble nun schon seit stunden an einer verflixten if-anweisung, bei der mir der fehler nicht ins auge springen will. C++ hat ja bei operationen bzw. anweisungen einen rangverlauf, bzw. vorrang. also was in klammern und am tiefsten steht, wird bevorzugt, bzw. genau so ausgeführt. aber was red ich da dass wisst ihr ja
mein problem ist das ich in einer if-anweisung einen ergleich ausführen will und ein logisches und, das beides zusammen erfüllt/nicht erfüllt werden muss. dannach kommt ein lgisches oder, das genau das gleiche erfüllen muss. also beides zusammen, der vergleich und das logische und muss true/false ergen und nicht etwa nur der vergleich, verstanden? anbei ein beispiel:
//es handelt sich im beispiel allgemein um einen typ string (ansistring!) //und nicht etwa int und string... nur so zur verständigung //ohne vorrang -> klappt nicht if(a == b && c.Pos("1") || a1 == b1 && c1.Pos("2")) { //erste bedingung (vor dem OR erfüllt) ODER (||) zweite bedingung erfüllt.... } //mit vorrang -> klappt nicht if((a == b && c.Pos("1")) || (a1 == b1 && c1.Pos("2"))) { //erste bedingung (vor dem OR erfüllt) ODER (||) zweite bedingung erfüllt.... } //mit vorrang2 -> klappt nicht if((a == b) && (c.Pos("1")) || (a1 == b1) && (c1.Pos("2"))) { //erste bedingung (vor dem OR erfüllt) ODER (||) zweite bedingung erfüllt.... } //mit vorrang3 -> klappt nicht if((a == b && c.Pos("1") || a1 == b1 && c1.Pos("2"))) { //erste bedingung (vor dem OR erfüllt) ODER (||) zweite bedingung erfüllt.... }
habe es x-mal versucht. aber es scheint als würde OR oder AND falsch oder nicht ausgeführt werden. hmmmmmmmm
-
rangfolge (auszug):
<höchster rang>
()&&
||
<niedrigster rang>
-
LaborX schrieb:
//ohne vorrang -> klappt nicht if(a == b && c.Pos("1") || a1 == b1 && c1.Pos("2")) { //erste bedingung (vor dem OR erfüllt) ODER (||) zweite bedingung erfüllt.... }
die if-anweisung wird ausgeführt, wenn der erste ausdruck (vor dem ||) ODER der zweite ausdruck (nach dem ||) wahr ergeben. also wenn einer der beiden, oder beide wahr sind.
war es das, was du wissen wolltest, ansonsten seh ich net durch
mfg _mika_
-
die if-anweisung wird ausgeführt, wenn der erste ausdruck (vor dem ||) ODER der zweite ausdruck (nach dem ||) wahr ergeben. also wenn einer der beiden, oder beide wahr sind.
ja hm so muss ich das haben aber es klappt nicht. es scheint also würde der if-block nicht ausgeführt werden. also so als ob die erste bedingung false leifert (dann müsste ja das OR kommen) .... hmmmmmmmm
-
also sind die variablen a, b und c (bzw a1, b1 und c1) vom typ ansistring (btw, ka wie der in c++ aussieht, noch nie mit gearbeitet) ?