Hi Christian,
abgesehen davon, dass
%d
die falsche Formatangabe fürsize_t
ist!Nein, es ist der richtige. Es fehlt nur der length modifier
z
:Length modifier
Here, "integer conversion" stands for d, i, o, u, x, or X conversion. […]
- z A following integer conversion corresponds to a size_t or ssize_t argument, or a following n conversion corresponds to a pointer to a size_t argument.
Das richtige Format für
size_t
ist"%zd"
(bzw"%zx"
wenn der Wert hexadezimal dargestellt werden soll).Wie oft soll man dir das eigentlich noch erklären, bis du mal einen
size_t
hast, der $$\ge 2^{31}$$ ist?!Ja, der length modifier
z
sollte wirklich nicht fehlen.
vielen Dank für den Hinweis. Warum beschweren sich die Compiler hier eigentlich eher über ein fehlendes l
anstatt gleich auf z
hinzuweisen? Die Parameter für printf
& Co werden doch mittlerweile standardmäßig geprüft.
Viele Grüße
Robert