Ich habe eine Verwirrung darüber, wie der Compiler eine Char-Variable mit mehreren Zeichen behandelt. Ich verstehe, dass ein Zeichen 1 Byte ist und ein Zeichen wie ASCII enthalten kann.Zeichen val = 'abcd'. Verwenden von Multi-Zeichen-Char
Aber wenn ich versuche:
char _val = 'ab';
char _val = 'abc';
char _val = 'abcd';
Sie kompiliert fein und wenn ich _VAL es immer druckt das letzte Zeichen zu drucken. Aber wenn ich
tatchar _val = 'abcde';
Dann bekam ich einen Compiler-Fehler:
Error 1 error C2015: too many characters in constant
Also meine Fragen sind:
- Warum der Compiler immer das letzte Zeichen nimmt, wenn mehrere Zeichen verwendet werden ? Was ist der Compiler-Mechanismus in dieser Situation?
- Warum habe ich einen zu viele Zeichen Fehler bekommen, wenn ich 5 Zeichen gesetzt habe. 2 Zeichen ist mehr als was ein Char kann also warum 5?
Ich bin mit Visual Studio 2013
Danke.
Auf 1: "immer", nein, es ist die Implementierung definiert. Verschiedene Compiler werden verschiedene Dinge tun (aber immer das Gleiche). – usr2564301
Wahrscheinlich, weil 4 'char's die Größe von 1' int' haben (auf den meisten Plattformen, einschließlich deins). So kann ein 'int'-Wert aus einer beliebigen Folge von bis zu 4' char's berechnet werden. Um diesen "int" -Wert einer "char" -Variablen zuzuweisen, wird er auf die Größe von "char" gekürzt (so wird nur das "am wenigsten signifikante" "char" kopiert). –