La sección 4.5 del estándar C++ (promoción entera) habla sobre casos específicos de conversión de tipos integrales a tipos con un rango más alto.Cuál es la diferencia entre las promociones enteras y las conversiones enteras en C++
Sección 4.7 de la norma C++ (conversiones integrales) comienza con (bullet 4.7.1):
Un valor p de un tipo entero se puede convertir en un valor p de otro tipo entero. Un valor de un tipo de enumeración se puede convertir a un valor r de un tipo entero.
Por lo que yo entiendo, las conversiones descritas en 4.5 (tal vez a excepción de la viñeta 4.5.3 (enumeraciones)) se pueden realizar utilizando las técnicas de la sección 4.7 solamente: 4.5.1 y 4.5.2 están completamente cubiertos por 4.7.1; 4.5.4 está cubierto por 4.7.4. Entonces, ¿cuál es el propósito de toda la sección 4.5? ¿Qué conversiones adicionales permite? Tal vez me faltan algunas restricciones?
P.S. Estoy leyendo la versión C++ 03 del estándar.
Hmm. Entonces si tengo 'unsigned char a; firmado char b; ... short c = a + b', al principio 'a' y' b' son * promovidos * a ints (no) firmados, agregados y luego el resultado es * convertido * a 'short'? –
@buratinas, sí. – AProgrammer
@buratinas: a se promociona a no compartida int, b se promueve a firmado int, luego el resultado de la promoción de b se convierte a unsigned int, luego estos se agregan y el resultado se convierte en short firmado. –