Mögliche Duplizieren:
Why are C character literals ints instead of chars?C und C++ Unterschied in sizeof ('x')
Warum bei der Verwendung von C tut sizeof('x')
Rückkehr 4 aber sizeof('x')
in C++ 1 zurückgibt?
C++ ist normalerweise bestrebt, nicht mehr als eine Obermenge von C zu sein. Warum unterscheiden sich die beiden Ergebnisse?
Bearbeiten Nur noch 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.
Mehr oder weniger ein (Anhang C der Unvereinbarkeiten zwischen C und C++ beschreibt) Duplikat von [Unterschiedliche Größe der Ergebnisse] (http://stackoverflow.com/questions/49046/different-sizeof-results), [Warum sind C-Zeichen-Literale anstelle von Zeichen ints?] (http://stackoverflow.com/questions/ 433895 /) und [Größe von (char) in 32-Bit-C-Compilern verstehen] (http://stackoverflow.com/questions/3451266/) und vielleicht ein oder zwei ot ihres. Gefunden mit http://stackoverflow.com/search?q=[c]+[c%2B%2B]+sizeof+character+literal. – dmckee
keine der Duplikate erklären warum. – doron
@deus: Es ist nur eine Designentscheidung. Der "c" -Weg bedeutet, dass der Compiler weniger Entscheidungen über die Typ-Promotion treffen muss (weil "Promotion" jedes Mal stattfindet), die vielleicht eine Rolle gespielt haben: Die Maschinen der frühen Siebziger waren langsam und hatten nur wenig Speicher, also einfache Compiler ein Muss. – dmckee