Tengo problemas para familiarizarme con la definición y el uso de las constantes simbólicas y literales, y me preguntaba si alguien podría explicarlas y resaltar sus diferencias. ¡Gracias!Diferencia y definición de constantes literales y simbólicas en C?
Respuesta
Un símbolo es algo que trata el compilador. El compilador trata un const
de la misma manera que trata una variable. Por otro lado, un #define
es algo que el compilador ni siquiera conoce, porque el precompilador lo transforma en su valor. Es como buscar y reemplazar. Si lo hace
#define A 5
y luego
b += A;
El precompilador la traduce en
b += 5;
y todo el compilador ve es el número 5.
Creo que lo que quieres decir es que una constante literal es una expresión primitiva como "cadena" o 2 o falso, mientras que una simbólica es cuando le das un nombre, como const int MagicNumber = 42. Ambos se pueden usar como expresiones, pero puede referirse a este último con un nombre. Útil si usa la misma constante de muchos lugares.
Una constante literal es una valor escrito directamente en su programa donde sea necesario. Por ejemplo
int tempInt = 10;
tempInt es una variable de tipo int; 10 es una constante literal. No puede asignar un valor a 10, y su valor no se puede cambiar. Una constante simbólica es una constante representada por un nombre, tal como se representa una variable. A diferencia de una variable, sin embargo, después de que se inicializa una constante, su valor no se puede cambiar.
Si el programa tiene un entero estudiantes variable llamada y otras clases nombradas, se podía calcular el número de estudiantes que tiene, dado un número conocido de clases, si sabía que había 15 estudiantes por clase:
estudiantes = clases * 15;
(Tomado de publicaciones anteriores) Una constante literal es un valor escrito directamente en su programa donde sea necesario. Por ejemplo
int breakpoint = 10;
El punto de interrupción variable es un número entero (int); 10 es una constante literal. No puede asignar un valor a 10, y su valor no se puede cambiar. A diferencia de una variable, una constante no se puede cambiar después de asignarle un valor (inicializado).
Un símbolo es algo que trata el compilador. En este ejemplo, TEN es una constante simbólica creada usando la función #define. Un #define es algo que el compilador ni siquiera conoce, porque el precompilador lo transforma en su valor asignado (definido). El precompilador busca y reemplaza cada constante de símbolo dentro de su programa con un valor.
#define TEN 10 /* These two lines of code become one... */
breakpoint += TEN; /* after running through the precompiler */
El precompilador la traduce en
Breakpoint += 10;
El compilador nunca ve TEN sino sólo su valor asignado, 10. ¿Por qué es útil?¿Qué pasa si el punto de interrupción se cambia a 11. En lugar de mirar a través del programa completo y cambiar cada definición de variable al nuevo valor que se estableció usando una constante literal, 10, cambiar la definición de una constante de símbolo único ... DIEZ a 11 y deja que el precompilador haga los cambios por ti.
- 1. Definición de colores como constantes en C#
- 2. Objective C - miembros y constantes
- 3. CakePHP Definición de constantes
- 4. ¿Es estándar para #if suponer constantes simbólicas indefinidas como 0?
- 5. Diferencia entre definición y defprotocol en Clojure
- 6. ¿Cuál es la diferencia entre macro constantes y variables constantes en C?
- 7. Diferente declaración y definición en C++
- 8. Constantes y optimización del compilador en C++
- 9. C# String.Sustituir comillas dobles y literales
- 10. Definición de constantes de aplicación en Codeigniter
- 11. Singletons y constantes
- 12. Palabras clave "nativas" y "literales"
- 13. ¿Cuál es la diferencia entre las banderas GCC -simbólicas y-compartidas?
- 14. Diferencia en volátiles en C# y C
- 15. hash literales en C#?
- 16. antlr gramática: parser- y analizadoras literales
- 17. Diferencia entre C: y C:/
- 18. Definición de bloque: diferencia entre llaves y do-end?
- 19. diferencia operador ++ i en C# y C++
- 20. C y C++ diferencia en sizeof ('x')
- 21. ¿Cuál es la diferencia entre% w {} y% W {} por ciento mayúsculas y minúsculas literales de matriz W en Ruby?
- 22. Extensión CPP y literales multilínea en Haskell
- 23. ¿Cómo tener constantes abstractas y anuladas en C#?
- 24. referencias constantes con typedef y plantillas en C++
- 25. literales JSON y objetos Javascript. Estoy confundido
- 26. Definición y uso de protocolos en Object-C
- 27. ¿Diferencias entre literales y constructores? ([] vs Array.new y {} vs Hash.new)
- 28. Definición de combinador Y alternativo
- 29. C# diferencia entre == y equals()
- 30. Sustitución dentro de literales literales literales? .
En C (y la pregunta está etiquetada C), el objeto 'const int' no es una constante. Para producir una constante nombrada (una constante simbólica) en C, uno tiene que usar '# define' o enums. – AnT
Jaja, lo siento, pensé que estaba navegando las preguntas C# :) – fejesjoco