Robert B.: Typkonvertierung in C bzw. Perl

Beitrag lesen

problematische Seite

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!

Ach was?

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:

Viele Grüße
Robert