Conversiones aritméticas usuales

La mayoría de los operadores de C realizan conversiones de tipos llevar los operandos de una expresión a un tipo común o para extender los valores cortos el tamaño entero utilizado en operaciones de equipo.Las conversiones realizadas por los operadores de C dependen del operador específico y el tipo del operando o de los operandos.Sin embargo, muchos operadores realizan conversiones similares en los operandos de tipos enteros y de punto flotante.estas conversiones se conocen como “conversiones aritméticas.” La conversión de un valor de operando a un tipo compatible no produce ningún cambio en el valor.

Conversiones aritméticas consolidadas siguiente se conocen como “conversiones aritméticas usuales.” Estos pasos se aplican únicamente para los operadores binarios que esperan que la aritmética escriba.El propósito es producir un común tipo que también es el tipo de resultado.Para determinar qué operaciones conversiones realmente, el compilador aplica el algoritmo siguiente a operaciones binarias en la expresión.Los pasos siguientes no son un orden de prioridad.

  1. Si alguno es de long doubleescrito, el otro operando se convierte para escribir long double.

  2. Si la condición anterior no se cumple y cualquier operando es de Dobleescrito, el otro operando se convierte para escribir Doble.

  3. Si las dos condiciones anteriores no se cumplen y cualquier operando es de Hacer flotanteescrito, el otro operando se convierte para escribir Hacer flotante.

  4. Si las tres condiciones anteriores no se cumplen (ninguno de los operandos son de tipos de punto flotante), las conversiones completas se realizan en los operandos como sigue:

    • Si alguno es de unsigned longescrito, el otro operando se convierte para escribir unsigned long.

    • Si la condición anterior no se cumple y cualquier operando es de Más escrito y de otro de unsigned intescrito, ambos operandos se convierten para escribir unsigned long.

    • Si las dos condiciones anteriores no se cumplen, y cualquier operando es de Másescrito, el otro operando se convierte para escribir Más.

    • Si las tres condiciones anteriores no se cumplen, y cualquier operando es de unsigned intescrito, el otro operando se convierte para escribir unsigned int.

    • Si no se cumple ninguna de las condiciones anteriores, ambos operandos se convierten para escribir int.

el código siguiente muestra estas reglas de conversión:

float   fVal;
double  dVal;
int   iVal;
unsigned long ulVal;

dVal = iVal * ulVal; /* iVal converted to unsigned long
                      * Uses step 4.
                      * Result of multiplication converted to double 
                      */
dVal = ulVal + fVal; /* ulVal converted to float
                      * Uses step 3.
                      * Result of addition converted to double 
                      */ 

Vea también

Referencia

Operadores de C