КОНСТАНТЫ И ПРЕПРОЦЕССОР ЯЗЫКА Си

КОНСТАНТЫ И ПРЕПРОЦЕССОР ЯЗЫКА Си

     Иногда возникает необходимость использовать в программах константы. Например, оператор, позволяющий определять длину окружности, можно было бы записать в следующем виде:

circ = 3.14 * diameter;

     Приведенная здесь константа 3. 14 - известное число Пи. Чтобы ввести ту или иную константу в программу, нужно указать ее фактическое значение, как было сделано выше. Однако существуют веские причины использовать вместо этого "символические константы", например, мы могли бы применять оператор

circ = pi * diameter;

     а позже компилятор подставил бы в него фактическое значение константы.

В чем достоинства такого метода?

Во-первых, имя говорит нам больше, чем число. Сравним два оператора

owed = 0 015 * housevl, owed = taxrate * housevl;

     Если мы изучаем большую программу, то второй вариант будет нам более понятен.

Во-вторых, предположим, что некоторая константа использовалась в нескольких местах программы и впоследствии возникла необходимость изменить ее значение - ведь в конце концов и налоговые тарифы (taxrate) меняются, и, к примеру, некое законодательное собрание приняло однажды закон впредь считать число p равным 31/7. (Весьма вероятно, что окружности пришлось при этом скрываться от правосудия). В таком случае требуется только изменить определение символической константы, а не отыскивать каждый случай ее появления в программе.

     Теперь осталось выяснить, как можно создать такую символическую константу? Первый способ заключается в том, чтобы описать некоторую переменную и положить ее равной требуемой константе. Мы могли бы сделать это следующим образом

float taxrate, taxrate = 0 015;

     Такой способ подходит для небольшой программы, в других же случаях он несколько неэкономичен, поскольку каждый раз при использовании переменной taxrate компьютер должен будет обращаться к той ячейке памяти, которая отведена данной переменной. Это служит примером подстановки "во время выполнения", так как она производится именно при выполнении программы. К  счастъю, в языке Си имеется и другой, лучший способ.

     Этот способ реализуется с помощью препроцессора языка Си. В гл. 2 мы уже видели, как препроцессор использует директиву #include для включения информации из другого файла в программу. Кроме того, препроцессор дает нам возможность задавать константы. Для этого в начало файла, содержащего вашу программу, необходимо добавить только одну строку, аналогичную следующей:

#define TAXRATE  0.015

     При компиляции программы каждый раз, когда появится переменная TAXRATE, она будет заменяться величиной 0.015. Это называется подстановкой "во время компиляции". К тому моменту, когда вы начнете выполнение своей программы, все подстановки будут уже сделаны.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

2.4 Константы

Из книги C++ автора Хилл Мюррей

2.4 Константы С++ дает возможность записи значений основных типов: символьных констант, целых констант и констант с плавающей точкой. Кроме того, ноль (0) может использоваться как константа любого указательного типа, и символьные строки являются константами типа char[]. Можно


6.4 Константы

Из книги Программирование на языке Пролог автора Клоксин У.

6.4 Константы Константы классового типа определить невозможно в том смысле, в каком 1.2 и 12e являются константами типа double. Вместо них, однако, часто можно использовать константы осноных типов, если их реализация обеспечивается с помощью фунций членов. Общий аппарат для


2.4 Константы

Из книги Программирование автора Козлова Ирина Сергеевна

2.4 Константы Как описано ниже, есть несколько видов констант. В #2.6 приводится краткая сводка аппаратных характеристик, которые влияют на их


14.5 Препроцессор

Из книги Справочное руководство по C++ автора Страустрап Бьярн

14.5 Препроцессор #define идентификатор строка_лексем#define идентификатор( идентификатор,...,идентификатор ) строка лексем #else #endif #if выражение #ifdef идентификатор #ifndef идентификатор #include «имя_файла» #include «имя_файла» #line константа «имя_файла» #undef


2.1.1. Константы

Из книги Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT автора Фролов Александр Вячеславович


9. Константы языка СИ

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

9. Константы языка СИ Константы – это перечисление величин в программе. В языке СИ можно выделить четыре вида констант: целые константы, константы с плавающей запятой, символьные константы и строковые литералы.Целая константа – это десятичное, восьмеричное или


R.17.7 Препроцессор

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

R.17.7 Препроцессор #define идентификатор строка-лексем#define идентификатор ( идентификатор , … , идентификатор )  строка-лексем#include "имяфайла"#include ‹имяфайла›#line константа "имяфайла" opt#undef идентификаторусловное: часть-if части-elif opt часть-else opt строка-endifчасть-if: строка-if


Константы

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

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


Константы

Из книги Конец холивара. Pascal vs C автора Кривцов М. А.

Константы Константа — это число, символ или строка символов. Константы используются в программе для задания постоянных величин. В языке Си различают четыре типа констант: целые, с плавающей точкой, символьные константы и символьные


Константы

Из книги QT 4: программирование GUI на С++ автора Бланшет Жасмин

Константы Операнду-константе соответствует значение и тип представляющей его константы. Типы констант подробно описаны в разделе 1.2. Символьная константа имеет тип int. Целая константа имеет один из следующих типов: int, long, unsigned int или unsigned long, в зависимости от размера


Константы

Из книги автора

Константы Константы, как мы уже выяснили, — данные, значение которых никогда не меняется. Константами являются, в частности, все числа, строки, логические и специальные значения, записанные в соответствии с правилами конкретного типа данных: 26756 "Строка" true null ActionScript также


11. Препроцессор языка Си

Из книги автора

11. Препроцессор языка Си ДИРЕКТИВЫ ПРЕПРОЦЕССОРА   СИМВОЛЬНЫЕ КОНСТАНТЫ    МАКРООПРЕДЕЛЕНИЯ И "МАКРОФУНКЦИИ"   ПОБОЧНЫЕ ЭФФЕКТЫ МАКРООПРЕДЕЛЕНИИ    ВКЛЮЧЕНИЕ ФАЙЛОВ    УСЛОВНАЯ


Константы

Из книги автора

Константы Константы определяются до переменных, например:CONST PI=3.14159;VAR R, L :


Константы

Из книги автора

Константы Примеры описания констант:int: 17;float:


Препроцессор

Из книги автора

Препроцессор Препроцессор С++ — это программа, которая обрабатывает исходный файл .cpp, содержащий директивы # (такие, как #include, #ifndef и #endif), и преобразует его файл исходного кода, который не содержит таких директив. Эти директивы предназначены для выполнения простых