Warum bei Verwendung von C sizeof('x')
gibt 4 zurück, aber sizeof('x')
in C ++ gibt 1 zurück?
C ++ ist normalerweise bestrebt, nicht mehr als eine Obermenge von C zu sein. Warum unterscheiden sich die beiden Ergebnisse?
Bearbeiten Nur eine weitere Klarstellung. Dies scheint eine bewusste Entscheidung seitens des Normenausschusses zu sein, und ich nehme an, dass die Änderung der Größe von "x" nicht ohne einen guten Grund erfolgt wäre. Ich bin daran interessiert, was der Grund ist.
Um die C ++ - Norm ISO 14882: 2003 zu zitieren, Anhang C.1.1 Abschnitt 2.13.2
Ändern : Der Typ des Zeichenliterals wird von int in char geändert
Rationale : Dies wird für die verbesserte überladene Funktionsargument-Typübereinstimmung benötigt. Zum Beispiel:
%Vor%Es ist vorzuziehen, dass dieser Aufruf der zweiten Version der Funktion und nicht der ersten
entspricht
(Anhang C beschreibt die Inkompatibilitäten zwischen C und C ++)
Weil C ist, ist 'x' eigentlich ein int, während es in C ++ ein char ist.
C ++ - Versuche straffen die starke Eingabe, die in C etwas lax war.