Diferentes idiomas definen las palabras "emitir" y "convertir" de manera diferente; No creo que la pregunta tenga sentido más que en referencia a un idioma en particular.
En C, por ejemplo, el término "conversión" se refiere correctamente solo a un operador de conversión explícito, que consiste en un nombre de tipo entre paréntesis que precede a la expresión a convertir. Una "conversión" convierte un valor de un tipo en un valor de otro tipo; Algunas conversiones se implementan reinterpretando los bits que componen la representación, pero se define como una conversión de valor a valor. (Sí, eso es cierto incluso para las conversiones de puntero; es posible que diferentes tipos de puntero tengan diferentes representaciones).
Tenga en cuenta que no hay tal cosa como un "elenco implícito" en C.
Algunas conversiones son explícitas, especificadas por un operador de conversión. Otros son implícitos y se aplican en ciertos casos cuando se usa una expresión de un tipo en un contexto que necesita una expresión de un tipo diferente. La conversión realizada es exactamente la misma en cualquier caso.
Por ejemplo:
double x = 1.23;
int y = (int)x; /* A cast, or explicit conversion, setting y to 1 */
int z = x; /* An implicit conversion, setting z to 1. */
C ++ es similar; que tiene los mismos moldes y conversiones como C, y se añade un equivalente de notación funcional a una expresión de conversión de estilo C, además de 4 palabras clave más específicas: const_cast
, dynamic_cast
, reinterpret_cast
, y static_cast
.