C
← Volver a Modificadores Moldes Seguir con Matrices


Os moldes realizan conversións de tipo en tempo de execución, polo que o seu uso non ten sentido con constantes literais, só con variables. Non se poden evitar con eles as conversións de tipo en tempo de execución ao operar con variables de tipos distintos, pero en certos casos si que se pode evitar facer máis conversións de tipo en tempo de execución das que son realmente necesarias, establecendo cales son as conversións axeitadas para cada caso.

Para utilizar un molde teremos que preceder, dentro dunha expresión, a variable (ou constante literal) cuxo tipo se desexa cambiar a efecto de dita expresión do tipo ao que queremos que cambie durante a execución, delimitado por parénteses. A seguinte sería a súa sintaxe fundamental:

(tipo)variable;
(tipo)constante;

O seguinte exemplo valerá para ilustrar a utilidade do uso de moldes:

// [...]
signed short int a;
unsigned short int b;
signed long int c;
unsigned long int d;
short int senmoldes, conmoldes;
// [...]
senmoldes=(a*b+c)*d;
conmoldes=(a*(short)b+(short)c)*(short)d;

A operación para calcular senmoldes e conmoldes é exactamente a mesma. Pero a diferencia está nas conversións de tipos de datos. No primeiro caso as conversións vanse facendo a medida que se avanza na análise da expresión, convertendo en cada operación as dúas variables implicadas ao tipo da variable que permita meirandes valores, e finalmente volvendo a converter o resultado ao tipo da variable, que non coincidirá co do resultado que cada vez foi sendo dun tipo maior. Pola contra, no segundo caso todas as variables se converten ao mesmo tipo, o da variable, de xeito que só fan falla tres conversións de tipo fronte ás 4 do primeiro caso.

O aforro de conversións en tempo de execución podería ser bastante amplo nun caso en que a variable na que se garda o resultado e todas as variables da operación fosen do mesmo tipo, salvo unha variable que fose dun tipo que permitise meirandes valores.


C
← Volver a Modificadores Moldes Seguir con Matrices