L vor Strings und chars

09/12/2010 - 15:26 von Dirk Krause | Report spam
Hallo,
ich habe mal eine Frage, wie der Operator L bei String-Literalen
definiert ist, z.B. in

wchar_t x[] = L"test";
wchar_t y = L'y';

Veranlasst das L die Verwendung von wchar_t für den Text bzw. den
Buchstaben oder die Verwendung von vorzeichenlosen 16-Bit-Werten?

Falls das L die Verwendung von wchar_t bewirkt, koennte ich Code wie
oben ja auf allen Systemen einsetzen, die einen wchar_t-Datentype haben.
Falls es die Verwendung von vorzeichenlosen 16-Bit-Werten bewirkt, waere
der Code ja nur auf solchen Systemen einsetzbar, auf denen ein
wchar_t auch 16 Bit breit ist.

Vielen Dank.

Gruss

Dirk
 

Lesen sie die antworten

#1 Thomas Koller
09/12/2010 - 15:49 | Warnen spam
Dirk Krause wrote:
Hallo,
ich habe mal eine Frage, wie der Operator L bei String-Literalen
definiert ist, z.B. in

wchar_t x[] = L"test";
wchar_t y = L'y';

Veranlasst das L die Verwendung von wchar_t für den Text bzw. den
Buchstaben oder die Verwendung von vorzeichenlosen 16-Bit-Werten?



Das L bewirkt, dass es sich um eine wide character constant
handelt und eine solche hat den Typ wchar_t.

Das führt zur vielleicht nicht ganz intuitiven Konsequenz, dass
L'y' den "kleineren" Datentyp haben kann als 'y', wenn auf
typischen 32-Bit-Systemen beispielsweise ein wchar_t 16 Bit ist,
ein int dagegen 32 Bit. :-)

Falls das L die Verwendung von wchar_t bewirkt, koennte ich Code wie
oben ja auf allen Systemen einsetzen, die einen wchar_t-Datentype haben.
Falls es die Verwendung von vorzeichenlosen 16-Bit-Werten bewirkt, waere
der Code ja nur auf solchen Systemen einsetzbar, auf denen ein
wchar_t auch 16 Bit breit ist.



Ja klar. Es ist schon die Idee hinter L"test", dass man das portabel
einsetzen kann, unabhàngig von der tatsàchlichen Breite, und es
auch noch funktioniert wenn wchar_t beispielsweise nur 8 Bit hat.

Tom

Ähnliche fragen