Kein Booleanüberlauf möglich- warum?

Hallo,

wenn ich den u.a. Code laufen lasse, bekomme ich als Ausgabe Folgendes:

bool= 1
byte= 0

bool bool01 = 1;
byte byte01 = 255;

void setup()
{
delay(5000);
Serial.begin(9600);
bool01 = bool01 + 1;
byte01 = byte01 + 1;
Serial.print("bool= ");
Serial.println(bool01);
Serial.print("byte= ");
Serial.println(byte01);
delay(1000);
}

void loop()
{
}

Eigentlich würde ich erwarten, dass Folgendes ausgegeben wird:

bool= 0
byte= 0

Kann ein Boolean/bool somit nicht überlaufen und wie löse ich folgendes Problem:

Je nachdem ob bool01 true oder false ist, soll bool02 (nicht Bestandteil des o.a. Codes) immer das Gegenteil von bool01 anzeigen.

Sprich:

if(bool01) bool02 = 0;
if(!bool01) bool02 = 1;

..nur kürzer ausgedrückt.

Gruß Chris

z.B. so:
bool2=!bool1
true/false
Diese sind Boolean Konstanten die logische Level definieren. FALSE ist einfach als 0 (Null)
definiert, während TRUE oft als 1 deifniert wird. Es kann aber alles sein ausser Null. Im
Sinne von Boolean ist auch -1,2 und -200 als TRUE definiert.

oder den Wert einfach togglen wie es mit Ports gemacht wird. var1 ^= 1;

var1 ^= 1;

Das binäre exklusive Oder?

Da finde ich das logische Not schon angemessener!

bool2=!bool1

Zumindest, wenn wir hier über "Boolean Values" reden....

boolean ist seit einigen Versionen das gleiche wie der C++ Datentyp bool. Und nicht mehr unsigned char wie früher. Das kann nur 0 oder 1 annehmen. Alles was größer als 1 wird automatisch auf 1 gekürzt. In dem Sinne hat es sowieso keinen Sinn da 1 zu addieren