Una variable, como se puede adivinar por el nombre, varía con el tiempo. Si no varía, no hay "pérdida". Cuando le dices al compilador que el valor no cambiará, el compilador puede hacer un montón de optimizaciones, como enunciar directamente el valor y nunca asignar ningún espacio para la constante en la pila.
Sin embargo, no siempre se puede contar con que el compilador sea lo suficientemente inteligente como para poder determinar correctamente si un valor cambiará una vez configurado. En cualquier situación donde el compilador sea incapaz de determinar esto con 100% de confianza, el compilador se equivocará por el lado de la seguridad y asumirá que podría cambiar. Esto puede dar lugar a diversos impactos en el rendimiento, como evitar la alineación, no optimizar ciertos bucles, crear código de objeto que no sea tan fácil para el paralelismo.
Debido a esto, y dado que la legibilidad también es importante, debe esforzarse por usar una constante explícita siempre que sea posible y deje las variables para las cosas que realmente pueden cambiar.
cuanto a por qué se utilizan las constantes en lugar de números literales:
1) Se hace que el código sea más legible. Todo el mundo sabe lo que 3.14 es (con suerte), no todo el mundo sabe que 3.07 es la tasa de impuesto a la renta en PA. Este es un ejemplo de conocimiento específico de dominio, y no todos los que mantengan su código en el futuro (por ejemplo, un software de impuestos) lo sabrán.
2) Ahorra trabajo cuando realiza un cambio. Ir y cambiar cada 3.07 a 3.18 si la tasa de impuestos cambia en el futuro será molesto. Siempre quiere minimizar los cambios e idealmente hacer un solo cambio. Cuantos más cambios concurrentes deba realizar, mayor será el riesgo de que se olvide de algo, lo que generará errores.
3) Usted evita los errores arriesgados. Imagine que hay dos estados con una tasa de impuesto a la renta de 3.05, y luego uno de ellos cambia a 3.18 mientras que el otro se queda en 3.07. Simplemente yendo y reemplazando, podrías terminar con errores severos. Por supuesto, muchos valores constantes enteros o de cadena son más comunes que "3.07". Por ejemplo, el número 7 podría representar el número de días de la semana y algo más. En programas grandes, es muy difícil determinar qué significa cada valor literal.
4) En el caso de texto de cadena, es común utilizar nombres simbólicos para cadenas para permitir que los grupos de cadenas cambien rápidamente en el caso de admitir varios idiomas.
Tenga en cuenta que, además de las variables y las "variables constantes", también hay algunos idiomas con enumeraciones. Una enumeración realmente le permite definir un tipo para un pequeño grupo de constantes (por ejemplo, valores de retorno), por lo que su uso proporcionará seguridad de tipo.
Por ejemplo, si tengo una enumeración para los días de las semanas y para los meses, se me avisará si asigno un mes en un día. Si solo uso constantes enteras, no habrá ninguna advertencia cuando el día 3 esté asignado al mes 3. Siempre desea seguridad de tipo, y mejora la legibilidad. Las enumeraciones también son mejores para definir el orden. Imagine que tiene constantes para los días de la semana, y ahora quiere que su semana comience el lunes en lugar del domingo.
longitud fija guardar s memoria donde peor copia de caso a nueva matriz funciona –
Esta pregunta requiere solo un contra-ejemplo: ¿por qué haría PI una variable? –
@ Hans Passant: ¿Estás seguro de que Pi es una constante? Hasta ahora solo se ha medido en las proximidades de la Tierra. ¿Estás seguro de que es constante en todo el continuo espacio-tiempo? –