Nicht gleich

Hey Leute,
was ist daran falsch ? Ich verstehs ned...

Serial.print(var5); if (var5 == 0 || (var5 != 1 || var5 != 2 || var5 != 3 || var5 != 4 || var5 != 5 )){
          var5 = 30; }

Die Var5 ist laut Serial Monitor 1 , 2,3,4 oder 5, trotzdem setzt er mir die var5 auf 30.

Stimmt die Logik nicht ? Ich verstehe darin wenn var 5 gleich 0, ODER nicht var 1,2,3,4,5 ist, dann Setze var5 auf 30.

Was er auch tut, aber halt immer.

Gruß Franz

Das ist ja auch immer wahr. Die Bedingung in der Klammer ist doch immer wahr.
Von den Bedingungen in der Klammer kann immer nur maximal eine 'falsch' sein, alle anderen sind wahr, und da Du das ODER verknüpfst ist der Gesamtausdruck immer wahr.

Ich denke, was Du willst, wäre in der Klammer die Bedinugnen mit && zu verknüpfen. Das ließe sich dann aber mit '>' / '<' einfacher abfragen.

Nur 1 Beispielgedanke:

Wenn var5 = 3 ist, ist z.B. var5!=1 wahr und wenn bei or 1 Teil wahr ist, ist alles wahr.

Gruß Tommy

Hey Leute,

also ist das besser bzw richtig ?

 if (var5 == 0 || !(var5 == 1 || var5 == 2 || var5 == 3 || var5 == 4 || var5 == 5)){ var5 = 30;}

Gruss

Du kannst Zahlen auch mit <= und >= abfragen statt alle einzeln

Hey Serenifly , also etwa so ? Ist richtig oder?

if (var5 == 0 || !(var5 >=1 && var5 <= 5)) {

var5 = 30;
}

Franz_grundi:
Ist richtig oder?

Du hast einen Arduino, probiere es aus!

Warum so kompliziert?

Pseudocode:v

[edit] Gerade gesehen: Die Variable var5 soll ja auch den Wert 30 haben, wenn sie zuvor 0 war. Also nochmal Pseudocode: wenn var5=0 oder var5>5 dann var5=30

Hallo,

was soll denn dieser Mehrfachvergleich überhaupt für einen Sinn haben.
var5 kann in dem Moment der Abfrage nur einen Wert haben.
Wenn der 0 ist soll es auf 30 geändert werden. Dafür reicht der Vergleich mit 0.
Wenn var5 gleich 0 ist kann es nicht gleichzeitig 1,2, ... oder 5 sein.

if (var5 == 0)
{  
    var5 = 30;
}

Wenn du auf verschiedene Werte hin verschiedene Dinge tun möchtest verzettel dich nicht in Ellenlange if Vergleich nimm switch case.

Genaugenommen ist

if (var5 == 0 || !(var5 >=1 && var5 <= 5))

identisch zu

if (var5 < 1 || var5 > 5))

, denn 0 ist sowieso nicht zwischen 1 und 5.

Hallo Franz,
die Abfrage Var5==0 ist dabei aber sinnlos. Wenn var5 = 0 ist, dann ist die rechte Bedingung auch wahr.

Franz_grundi:
Ich verstehe darin wenn var 5 gleich 0, ODER nicht var 1,2,3,4,5 ist,

Die erste Bedingung ist ja in der 2. enthalten.

Edit: Ok, michael_x hat's auch schon gesagt.

Hallo, danke für die Antworten und Erklärungen :slight_smile: Lerne hier im Forum viel dazu danke euch :slight_smile: