Robert B.: C mal wieder, Länge einer Binary

Beitrag lesen

Moin,

char *c = "a";
printf("%d %d", sizeof c, strlen(c));
                      4          1

4 ist die Byte-Länge des Pointers, 4*8 = 32 Bit , das ist das was meine Kiste hergibt. 1 heißt ein Byte. Wenn ich da ein ä reinsetze sind es 2 Bytes (utf8).

Richtig?

Bei UTF-8, ja – abgesehen davon, dass %d die falsche Formatangabe für size_t ist! Wie oft soll man dir das eigentlich noch erklären, bis du mal einen size_t hast, der $$\ge 2^{31}$$ ist?!

Aber um die Verwirrung noch etwas zu steigern:

char c[] = "a";
printf("%lu %lu\n", sizeof c, strlen(c));
                       2         1

Viele Grüße
Robert