Toutes les opérations sont effectuées sur des objets de du même type (en supposant des opérations arithmétiques normales).
Si vous écrivez un programme qui utilise différents types, le compilateur mettra automatiquement à jour le paramètre ONE afin qu'ils soient identiques.
Dans ce cas flotteurs seront modernisés à double:
result = a * (b + c) * d
float tmp1 = b + c; // Plus operation done on floats.
// So the result is a float
double tmp2 = a * (double)tmp1; // Multiplication done on double (as `a` is double)
// so tmp1 will be up converted to a double.
double tmp3 = tmp2 * d; // Multiplication done on doubles.
// So result is a double
result = tmp3; // No conversion as tmp3 is same type as result.
noter également des constantes non spécifiées sont supposées être double donc float a; a = a + 2,5; va convertir un pour doubler, exécutez l'addition puis revenez en simple: a = a + 2.5F; le forcerait à tous les calculs simples –