Duplicar posibles:
Why are C character literals ints instead of chars?C y C++ diferencia en sizeof ('x')
¿Por qué cuando se utiliza C hace sizeof('x')
de retorno 4, pero sizeof('x')
en C++ devuelve 1?
C++ normalmente se esfuerza por ser nada más que un superconjunto de C, ¿por qué los dos resultados divergen?
Editar Solo aclaración adicional. Esto parece ser un movimiento deliberado por parte del comité de estándares y supongo que no se habría hecho cambiar el tamaño de 'x' sin una buena razón. Estoy interesado en cuál es el motivo.
Más o menos una duplicado de [Diferentes tamaños de resultados] (http://stackoverflow.com/questions/49046/different-sizeof-results), [¿Por qué los literales de caracteres C son en vez de caracteres?] (http://stackoverflow.com/questions/ 433895 /) y [Entendiendo sizeof (char) en compiladores C de 32 bit] (http://stackoverflow.com/questions/3451266/) y quizás uno o dos ot suyo. Se encontró con http://stackoverflow.com/search?q=[c]+[c%2B%2B]+sizeof+character+literal. – dmckee
ninguno de los duplicados explica por qué. – doron
@deus: es solo una decisión de diseño. La forma "c" significa que el compilador tiene que tomar menos decisiones sobre la promoción de tipo (porque "la promoción" ocurre cada vez) que puede haber jugado un rollo: las máquinas de principios de los años setenta eran lentas y tenían memoria limitada, por lo que eran simples compiladores una necesidad – dmckee