Compartir a través de


Conversiones aritméticas

Muchos operadores binarios (descritos en Expresiones con operadores binarios) producen conversiones de operandos y producción de resultados de la misma manera.La manera estas conversiones de la causa de los operadores se denomina “las conversiones aritméticas usuales.” Conversiones aritméticas de operandos de diferentes tipos nativos se realizan como se muestra en la tabla siguiente.Los tipos de Definición se comportan como los tipos nativos subyacentes.

condiciones para la conversión de tipos

Condiciones cumplan

Conversión

Cualquier operando es de Mástipo Doble.

El otro operando se convierte para escribir Más Doble.

La condición anterior no cumplida y cualquier operando es de Dobleescrito.

El otro operando se convierte para escribir Doble.

Las condiciones anteriores no cumplan y cualquier operando es de Hacer flotanteescrito.

El otro operando se convierte para escribir Hacer flotante.

Condiciones anteriores no cumplan (ninguno de los operandos son de tipos de punto flotante).

Las promociones enteras se realizan en los operandos como sigue:

  • Si alguno es de unsignedtipo Más, el otro operando se convierte para escribir unsigned long.

  • Si la condición anterior no cumplida, y si alguno es de Más escrito y de otro de unsignedtipo int, ambos operandos se convierte para escribir unsigned long.

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

  • Si las tres condiciones anteriores no se cumplen, y si alguno 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 se muestran las reglas de conversión descritas en la tabla:

// arithmetic_conversions.cpp
double dVal;
float fVal;
int iVal;
unsigned long ulVal;

int main() {
   // iVal converted to unsigned long
   // result of multiplication converted to double
   dVal = iVal * ulVal;

   // ulVal converted to float
   // result of addition converted to double
   dVal = ulVal + fVal;
}

La primera instrucción del ejemplo anterior muestra la multiplicación de dos tipos enteros, iVal y ulVal.La condición cumplida es que ninguno de los operandos es de flotar tipo y un operando es de unsigned intescrito.Por consiguiente, el otro operando, iVal, se convierte para escribir unsigned int.el resultado se asigna a dVal.La condición cumplida es que un operando es de Dobleescrito; por consiguiente, el resultado de unsigned int de multiplicación se convierte para escribir Doble.

La segunda instrucción del ejemplo anterior se muestra la adición de Hacer flotante y un tipo entero, fVal y ulVal.La variable de ulVal se convierte para escribir Hacer flotante (tercera condición en la tabla).El resultado de la suma se convierte para escribir Doble (segundo condición en la tabla) y asignado a dVal.

Vea también

Referencia

Conversiones estándar