2011-01-03 19 views

Respuesta

3

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.

0

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.

+1

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

+0

Jaja, lo siento, pensé que estaba navegando las preguntas C# :) – fejesjoco

3

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;

0

(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.

Cuestiones relacionadas