Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лб инф передел / C++ / Алиса / Информатика / ПерваяПрограммаС.doc
Скачиваний:
47
Добавлен:
15.04.2015
Размер:
3.17 Mб
Скачать

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

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

#define NAME VALUE

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

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

Директиву #define можно использовать и для создания макроопределений (смотри главу 7).

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

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

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

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

#define PI 3.14

создает константу, называемую 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. Если ваша программа начинается со строки

#define MY_FRIEND "Марина"

на экране появится имя Марины. Почему? Потому что директива #define определяет константу с именем MY_FRIEND, имеющую значение "Марина".

Константы в Си++

Компиляторы Си++ и некоторые компиляторы Си имеют дополнительный способ определения констант. Можно определить константу, описать тип данных и присвоить значение, используя ключевое слово const. Такое определение должно помещаться внутри тела функции, в отличие от директивы, помещаемой всегда вне его:

main()

{

const int CHILDREN = 8;

const char INIT = 'C';

....;

....;

}

Использование ключевого слова const обусловлено тем, что оно позволяет программисту создавать константы, которые принадлежат одной определенной функции. Но чтобы обеспечить совместимость компиляторов Си и Си++, многие программисты продолжают использовать для определения констант директиву #define.

Приведенные инструкции определяют целочисленную константу со значением 8 и символьную константу, имеющую значение 'C'. Их можно определить и так:

#define CHILDREN 8

#define INIT 'C'

Соседние файлы в папке Информатика