Ich habe ja folgendes gelernt:
false ist 0
true ist alles Andere als 0
Und auch in der Arduino-Referenz steht es so zu lesen:
false is defined as 0 (zero).
...
Any integer which is non-zero is true, in a Boolean sense. So -1, 2 and -200 are all defined as true, too, in a Boolean sense.
Um das zu überprüfen könnte man folgendes Programmbeispiel (1) schreiben:
void setup() {
Serial.begin(9600);
for (int i = -3; i < 4; i++) {
Serial.print("i: ");
Serial.print(i);
if (i)
Serial.print(" true");
if (!i)
Serial.print(" false");
Serial.println();
}
}
void loop() { }
Das Ergebnis ist (wie zu erwarten):
i: -3 true
i: -2 true
i: -1 true
i: 0 false
i: 1 true
i: 2 true
i: 3 true
ABER, wenn ich den Code so schreibe (Programmbeispiel 2):
void setup() {
Serial.begin(9600);
for (int i = -3; i < 4; i++) {
Serial.print("i: ");
Serial.print(i);
if (i == true)
Serial.print(" true");
if (i == false)
Serial.print(" false");
Serial.println();
}
}
void loop() { }
bekomme ich folgendes Ergebnis (Arduino-IDE 1.8.6):
i: -3
i: -2
i: -1
i: 0 false
i: 1 true
i: 2
i: 3
Also plötzlich scheint zu gelten:
0 == false (wie zu erwarten)
1 == true
und alles Andere ist weder noch :o :o
Hat jemand eine Idee wie es dazu kommt.
Habe ich etwas übersehen oder falsch verstanden?
Ich hätte ja bei beiden Programmbeispielen das gleiche Ergebnis erwartet.