Moin pl,
Je nach Zeichenkodierung des Quelltexts funktioniert also
char e = '€';
Das funktioniert nur, wenn die Quelldatei in einer Kodierung gespeichert ist in welcher das Zeichen genau ein Byte hat!
Sonst meldet der Kompiler einen Fehler
warning: multi-character character constant [-Wmultichar]
Das ist eine Warnung, kein Fehler. Um mit gcc daraus einen Fehler zu machen, musst du noch -Werror
angeben.
Microsofts C++-Compiler warnt bei UTF-8 übrigens
euro-utf8.c(3): warning C4305: 'initializing': truncation from 'int' to 'const char'
Der Beispielcode, jeweils in ISO-8859-15 sowie UTF-8 gespeichert:
#include <stdio.h>
const char e = '€'; /* Zeile 3 */
int main(void) {
printf("%c / %x\n", e, e);
return 0;
}
Die Ausgaben:
- ISO-8859-15:
ñ / ffffffa4
–0xa4
ist dort der Code für€
- UTF-8:
¼ / ffffffac
–0xac
ist dort das niederwertigste Byte von€
, siehe https://de.wikipedia.org/wiki/UTF-8#Beispiele
Viele Grüße
Robert