Klaus schrieb:
> Ich programmiere auch schon einige Jahre in C und kannte dieses Detail
> noch nicht. Habs bisher einfach nicht gebraucht.
Wurde mit der 1989er Version eingeführt. Nur auf diese Weise ist
es nämlich möglich, eine "\x"-Escapefolge zu beenden, wenn danach
gleich wieder eine Ziffer folgt. "\x12345" würde nicht etwa
interpretiert als das Zeichen "\x12", gefolgt von "345", sondern
es würde interpretiert als String, bestehend aus einem Zeichen mit
dem Wert 0x12345 (der sicherlich alle gängigen Zeichensatzsysteme
überschreitet). Das ist ein Unterschied zu oktalen Zeichen, die
spätestens nach der dritten Ziffer beendet wurden.
Der C89-Ausweg daraus war, dass man obigen String als "\x12" "345"
schreiben kann und muss.
Wo sich das Feature auch recht nett macht ist, wenn man bestimmte
Teile eines Strings als #define auslagern möchte. Nehmen wir an,
du hast ein LCD an deinem Controller, das das Zeichen 'µ' in der
Zeichensatzposition 0x89 stehen hat, dann kannst du schreiben:
1 | #define MY "\x89"
|
2 |
|
3 | ...
|
4 | printf("Kapazität: %f " MY "F", cap);
|