C und C ++ Unterschied in der Größe von ('x') [duplizieren]

7

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.

    
doron 08.09.2010, 23:01
quelle

3 Antworten

16

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 ++)

    
Cubbi 08.09.2010, 23:13
quelle
7

C ++ ist keine Obermenge von C. Besonders wenn Sie die "aktuellen" Versionen verwenden - ein Compiler im C ++ 0x-Modus wird an C99-Code ersticken.

    
kwatford 08.09.2010 23:07
quelle
5

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.

    
James Curran 08.09.2010 23:04
quelle

Tags und Links