Forum: Compiler & IDEs Typ vom C string literal wie zB "text"


von daniel (Gast)


Lesenswert?

ist ein Literal => const char *
oder => const unsigned char *

wenn ich gcc --funsigned-char code.c
benutze, wird damit nicht Typ vom string literal zu
const unsigned char * gesetzt?

grüsse, Daniel

von yalu (Gast)


Lesenswert?

Ein String-Literal hat streng genommen gar keinen Typ, da es weder ein
Pointer noch ein Array ist. Es ist einfach eine Folge von Zeichen.

Diese Zeichen selbst haben aber einen Typ, und der ist immer char.

Mit den Compiler-Optionen -funsigned-char und -fsigned-char legt man
fest, ob der Typ char bei Rechenoperationen als vorzeichenlose oder
vorzeichenbehaftete Zahl behandelt wird.

Unabhängig von dieser Einstellung sind aber char, signed char und
unsigned char drei verschiedene Datentypen.

von Rolf Magnus (Gast)


Lesenswert?

> ist ein Literal => const char *
> oder => const unsigned char *

Keins von beiden. Es ist ein Array aus const char.

> Ein String-Literal hat streng genommen gar keinen Typ, da es weder ein
> Pointer noch ein Array ist.

Naja, es ist nicht selbst ein Array, da noch ein paar Umformungen 
dazwischen sind, aber nach diesen wird dann ein Array draus.

von yalu (Gast)


Lesenswert?

> Diese Zeichen selbst haben aber einen Typ, und der ist immer char.

Korrektur: const char meinte ich natürlich

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.