Останнє спостереження, до того як ми назавжди залишимо програму перетворення температур. Вважається поганою практикою закопувати «магічні числа», такі як 300 та 20 десь всередині програми; вони мало про що кажуть тим, хто переглядає програму пізніше, і їх важко змінити у систематичний спосіб. Одним з рішень питання про «магічні числа» є надання їм осмислених імен. Рядочок #define означує символічну назву або символічну константу для ланцюжка якихось знаків:
#define назва заміна
Таким чином, будь-яку появу назви (не в лапках, і не як частина іншої назви) буде замінено на відповідний текст заміни. Назва має ту саму форму, що й назва змінних: послідовність літер і цифр, що починаються з літери. Текст заміни може складатися з довільної послідовності знаків; він не обмежений тільки числами.
#include <stdio.h>
#define LOWER 0 /* нижня межа температурної шкали */
#define UPPER 300 /* верхня межа */
#define STEP 20 /* розмір кроку */
/* виводить таблицю Фаренгейт-Цельсій */
main()
{
int fahr;
for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
}
Величини LOWER, UPPER та STEP — це символічні константи, а не змінні, тож вони не з'являються в оголошеннях. Назви символічних сталих традиційно пишуться з великих літер, щоб легко було відрізнити їх від назв змінних у нижньому регістрі. Зверніть увагу, що крапки з комою немає в кінці рядка #define.