int Variable in uint8_t umwandeln

Hallo,

eine kleine Anfängerfrage, wandel ich eine int Variable korrekt in eine uint8_t bzw. uint16_t Variable mit folgenden Befehlen um:

int a = 8;

uint8_t b = (uint8_t)a;
uint16_t c = (uint8_t)a;

Oder ist das mit einem cast falsch? Kann mir hierbei jemand einen Tipp geben?

Liebe Grüße, Tobi

Ist nicht falsch, aber Casten geht bei sowas auch implizit, d.h. automatisch durch den Compiler. Wenn die Zahl nicht in ein Byte passt gehen halt Informationen verloren

Dein erstes cast ist nicht falsch, aber überflüssig.

Auf einem 8bit Arduino (mit 16 bit int): jeder Hardware gilt

int a = -8;  // damit es interessant wird, mit negativem Wert
uint16_t b = a;  // FFF8 = 65528
uint16_t c = (uint8_t) a; // 00F8 = 248

Durch explizites cast erspart man sich evtl. eine Compiler - Warnung

Klasse, vielen Dank für die Informationen :slight_smile: :slight_smile: