Secuencia de conversión de tipos de datos básicos de C

Reimpreso: https://blog.csdn.net/whui19890911/article/details/8678988

Conversión automática de tipos: convierte automáticamente el tipo de operando con baja precisión, lo que significa que el alcance es pequeño, al tipo de operando con alta precisión, lo que significa que el alcance es grande. Para obtener un resultado de cálculo de mayor precisión.
double ← —— float high 
↑ 
long 
↑ 
unsigned 
↑ 
int ← —— char, short low 
● La flecha horizontal en la figura indica la conversión necesaria . Si hay datos de tipo char o short en la expresión, se convertirá a tipo int para participar en la operación. Por ejemplo, dos números de tipo flotante participan en la operación.

    Hay tipos flotantes en las expresiones, que se convierten todos en tipos dobles para participar en las operaciones. 

Las flechas verticales indican la conversión cuando los operandos en ambos lados del operador son de diferentes tipos. Por ejemplo, si un dato de tipo largo se opera con un dato de tipo int, los datos de tipo int deben convertirse primero al tipo largo, y luego se realizan las dos operaciones El resultado es tipo largo. Todas estas conversiones las realiza el sistema de forma automática, y solo necesitas conocer el tipo de resultado al utilizarlo. Se puede decir que estas conversiones son automáticas.

Los datos de caracteres se refieren a caracteres representados por valores ASCII como letras, números y varios símbolos. 0-127 almacena el valor ASCII básico y 128-255 es el valor ASCII extendido. El lenguaje C permite el uso de unsignd firmado para modificar datos de tipo char, pero la diferencia entre las diferentes definiciones se puede mostrar solo cuando la salida está en forma de datos enteros.

Cuando los tipos de datos de los operandos en ambos lados del operador de asignación son inconsistentes, el sistema convertirá automáticamente el valor de la expresión en el lado derecho del número de asignación al tipo de variable de la izquierda antes de la asignación. detalles como sigue:

(1) Tipo de coma flotante y entero 
● Al convertir un número de coma flotante (precisión simple y doble) en un entero, la parte decimal del número de coma flotante se descartará y solo se conservará la parte entera. 
Asigne un valor entero a una variable de punto flotante, el valor permanece sin cambios, solo la forma se cambia a una forma de punto flotante, es decir, un número de ceros después del punto decimal. Nota: La conversión de tipo durante la asignación es realmente obligatoria. 
(2) Tipos de coma flotante de precisión simple y doble
● Dado que los valores de coma flotante  en lenguaje C siempre se expresan en precisión doble, los datos de tipo flotante solo se agregan con 0 al final para extender los datos de tipo doble a participar en la operación y luego asignar directamente el valor. Cuando los datos de tipo doble se convierten a tipo flotante, se realiza truncando el número y se realiza el redondeo antes del truncamiento.
(3) Char type y int type 
● Cuando el valor del tipo int se asigna a la variable char type, solo se retienen los 8 bits más bajos y se descarta la parte más alta. 
● Cuando se asigna un valor de tipo char a una variable de tipo int, algunos compiladores lo tratan como un número positivo independientemente de su valor, mientras que otros compiladores lo tratan como un número negativo si el valor de los datos del tipo char es mayor que 127 durante la conversión. Para los usuarios, si los datos del tipo char original toman un valor positivo, seguirá siendo positivo después de la conversión; si el valor char original puede ser positivo o negativo, el valor original aún se mantendrá después de la conversión, pero la representación interna de los datos son diferentes.
(4) Tipo int y tipo 1ong 
● Cuando se asignan datos de tipo largo a una variable de tipo int, el valor bajo de 16 bits se envía a la variable de tipo int, y los 16 bits altos se truncan y descartan. (Se supone que el tipo int ocupa dos bytes). 
Al enviar datos de tipo int a una variable de tipo largo, su valor externo permanece sin cambios, mientras que cambia la forma interna. 
(5) Entero sin signo 
● Cuando se asigna un dato sin signo a una variable de número entero que ocupa la misma longitud de la unidad de almacenamiento (como: unsigned → int, unsigned long → long, unsigned short → short), el valor original se asigna de acuerdo con el valor interno. El método de almacenamiento sigue siendo el mismo, pero el valor externo puede cambiar.
● Cuando se asigna un dato entero sin signo a una variable sin signo con la misma longitud, el formato de almacenamiento interno permanece sin cambios, pero la representación externa siempre está sin signo.

Supongo que te gusta

Origin blog.csdn.net/modi000/article/details/113859295
Recomendado
Clasificación