Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Определение констант

Определить константу— это значит сообщить компилятору Си ее имя и значение. Для определения кон- станты перед функцией main() помещают директиву #define, имеющую следующий синтаксис:

#define NAME VALUE

После директивы точка с запятой не пишется, зато необходимо вставить, по меньшей мере, по одному пробелу между директивой, именем константы и присваиваемым значением. Дополнительные синтаксиче- ские символы вводятся в зависимости от типа определяемых данных: числовых, символьных или строк (рис.3.5).

Перед тем как начать генерировать объектные коды, компилятор подставляет на место каждого встречен- ного им имени константы ее значение (это можно сравнить с функцией автоматического поиска и подста- новки, которая имеется в

Рис. 3.6. Определение константы

текстовых процессорах). По сути, само имя константы никогда не преобразуется в объектные коды.

Для определения числовой константы необходимо задать имя и значение константы. Например, директива

#define PI 3.14

Рис. 3.7. Компилятор подставляет вместо имени константы ее значение

создает константу, называемую PI, и присваивает ей значение 3.14 (рис.3.6).

Везде, где компилятор в исходном тексте программы (например, в формуле) встретит имя константы PI, он подставит вместо него значение 3.14 (рис.3.7).

При определении константы нет необходимости специально указывать тип данных. Компилятор присвоит его на основании значения, заданного директивой #define. В приводившемся выше примере, константа PI будет отнесена к типу чисел с плавающей точкой, так как ее значение, 3.14, является вещественным чис- лом. В директиве

#define COUNT 5

компилятор отнесет константу COUNT к типу целых чисел, поскольку 5— это целое число.

Присваивая константе значение, относящееся к типу float, проследите, чтобы ваше число имело, по мень- шей мере, по одному знаку слева и справа от точки. Если само значение не имеет десятичной части, до- бавьте после точки пару нулей:

#define RATE 5.00

Если этого не сделать, компилятор автоматически отнесет константу к типу int, вместо float. Если вы за- даете значение константы меньше единицы, добавьте ноль перед точкой:

#define RATE 0.56

В противном случае, если будет написано #define RATE .56, неизбежна ошибка компиляции. Значение символьного типа должно быть заключено в одинарные кавычки:

#define UNIT 'A'

Аналогично, определяя строку, заключите значение в двойные кавычки:

#define MY_FRIEND "George" main()

{

puts(MY_FRIEND);

}

Помните о том, что кавычки не входят в значение константы.

Когда имя константы является параметром, как с функцией puts() в нашем примере, оно не заключается в кавычки. Отсутствие кавычек указывает компилятору, что следует использовать значение, присвоенное

константе с таким именем, а не символы (буквы), из которых это имя состоит. То есть в нашем случае бу- дет использовано значение, присвоенное константе MY_FRIEND, которое соответствует строке "George", а не буквы M-Y-_-F-R-I-E-N-D. Для того чтобы на экране появилось именно слово MY_FRIEND, инструкция должна быть такой:

puts("MY_FRIEND");

После того как мы ввели директиву #define MY_FRIEND" George", встретив в любом месте программы сло- во MY_FRIEND, компилятор подставит вместо него слово "George", так что инструкция

puts(MY_FRIEND);

на самом деле будет вызывать функцию puts() как

puts("George");

что приведет к появлению на экране имени George. Если ваша программа начинается со строки