(Заимствование из более ранних публикаций). Литеральная константа - это значение, введенное непосредственно в вашу программу, где бы оно ни было необходимо.Например
int breakpoint = 10;
Переменная точка останова является целым числом (int);10 буквальная константа.Вы не можете присвоить значение 10, и его значение не может быть изменено.В отличие от переменной, константа не может быть изменена после того, как ей присвоено значение (инициализировано).
Символ - это то, с чем имеет дело компилятор.В этом примере TEN является символической константой, созданной с помощью функции #define.#Define - это то, о чем даже не знает компилятор, потому что прекомпилятор преобразует его в назначенное (определенное) значение.Прекомпилятор ищет и заменяет каждую символьную константу в вашей программе значением.
#define TEN 10 /* These two lines of code become one... */
breakpoint += TEN; /* after running through the precompiler */
Прекомпилятор переводит его в
Breakpoint += 10;
Компилятор никогда не видит TEN, а только присваивает ему значение 10. Почему это полезно?Что делать, если точка останова изменяется на 11. Вместо просмотра всей программы и изменения каждого определения переменной на новое значение, которое было установлено с использованием литеральной константы 10, измените определение константы одного символа ... ДЕСЯТЬ на 11 ипусть прекомпилятор сделает изменения за вас.