Moin pl,
printf sieht nur den Speicherinhalt. Ob 4 Bytes Speicher ein unsigned int, ein signed int, ein float oder ein char[4] Array repräsentieren, kann es nicht wissen.
Auch klar,
%i %d %u
sind ja nur Formate für die Ausgabe.
Nö, das sind Formate, wie die Funktionsparameter zu interpretieren sind. Für die Formatierung gibt es zusätzliche Flags.
Und %d nehme ich wenn ich zusätzlich zu einem integer das Vorzeichen sehen will. Wenn ich alles mit %u ausgebe, sehe ich ja das Vorzeichen nicht.
Nein, %d
und %i
bedeuten, dass das entsprechende Argument als int
zu interpretieren ist, während %u
für einen unsigned
steht.
Ich finde,
uint32_t host = -3 ;
sollte eigentlich der Compiler beanstanden. Meinst Du nicht auch?
Wenn du solch eine Prüfung haben möchtest, sind die „plain“-Datentypen von C das Falsche für dich. Das ist der Nachteil des effizienten Datenzugriffs.
Viele Grüße
Robert