Cuando usar un operador de conversión de tipo

El operador de conversión de tipo se describe en la página del operador de conversión de tipo explícito y permite que el resultado de una expresión se convierta explícitamente a otro tipo. Los yesos a veces son necesarios, pero a menudo se usan en exceso. Esta página analiza cuándo debe usar un operador de conversión de tipo.
Hay muchas situaciones en las que debe usar un molde en su código para asegurarse de que las operaciones se realicen del tipo que desee. Un ejemplo común de tal situación es el código:


que realizaría una división entera de x entre y y asignaría el resultado 3 a escala. Si en cambio quieres una división de coma flotante y un resultado de coma flotante, un reparto puede hacer eso. El código modificado:


asignaría 3.5 a escala.
También puede usar moldes para evitar el desbordamiento, como en:


que asignaría el valor -1536 para resultar si un int tuviera 16 bits de ancho (como lo es con el compilador MPLAB® XC8) pero:


asignaría el valor 64000.
En otras situaciones, la elección de usar un reparto es en cierta medida una preferencia personal. Como regla general, no emita expresiones a menos que haya una buena razón. Aquí hay algunas cosas para considerar:

Las reglas de lenguaje C garantizan que los tipos se conviertan implícitamente cuando sea necesario. Entonces, por ejemplo, en:


el compilador debe convertir el valor largo mantenido por la entrada a un tipo de carácter antes de que se realice la asignación, por lo que no es necesario realizar un molde.
La mayoría de los compiladores, sin embargo, emitirán una advertencia si una conversión implícita, como la anterior, es de un tipo más pequeño donde podría haber una pérdida de datos. En tal situación, puede lanzar la expresión para que la advertencia se suprima. Ver un reparto en ese contexto también puede tranquilizar a cualquiera que lea el código fuente que la conversión inusual fue intencional.
Pero el casting tiene un precio. Lanza expresiones desordenadas, haciéndolas más difíciles de interpretar para los humanos. También pueden aumentar el trabajo requerido para mantener el código y pueden aumentar la probabilidad de que se introduzcan errores. Considere si la asignación anterior se ha escrito con un molde de tipo, por ejemplo:


Si un cambio en el diseño del programa significaba que el tipo de salida tenía que cambiarse a int, el molde anterior debería revisarse. ¿Confía en que encontrará y revisará cada elenco de su programa cada vez que modifique su código? Y dado que los moldes suprimen las advertencias de conversión de tipos, no hay ninguna guía que lo ayude a encontrar los cambios de tipo explícitos que están teniendo lugar.
Si encuentra que su código necesita conversiones de tipo, considere si su código puede ser reestructurado para evitar la situación por completo.

Fuente: To Cast, or Not to Cast

Comentarios

Entradas más populares de este blog

Resistencias

Guía de introducción de XC8