Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗФ_ОАиП / Лекции ГГУ Скорины - Программирование.doc
Скачиваний:
179
Добавлен:
21.03.2016
Размер:
2.27 Mб
Скачать

6. Константы

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

Строковая константа – последовательность символов, заключенная в кавычки (например, “123”, “Введите число”).

Символьная константа – символ, заключенный в апострофы (например, ‘a’, ‘!’).

Целая константа – это десятичное, восьмеричное или шестнадцатеричное целое число:

1) десятичная константа – последовательность цифр, не начинающаяся с 0 (например, 100, 78).

2) восьмеричная константа состоит из обязательного нуля и одной или нескольких восьмеричных цифр. Среди цифр должны отсутствовать восьмерка и девятка, так как эти цифры не входят в восьмеричную систему счисления (например, 077, 05).

3) шестнадцатеричная константа начинается с обязательной последовательности 0х или 0Х и содержит одну или несколько шестнадцатеричных цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (например, 0xFF, 0x9A).

Вещественная константа – может быть в двух форматах:

1) с фиксированной точкой (десятичный формат):

[цифры].[цифры] (например, 1., 2.0, 7.5).

2) с плавающей точкой (экспоненциальный формат):

[цифры]E|e[+|-]цифры (например, 4е-7=4*10-7, 5.1е+8=5.1*108, 2e5=2*105).

Если требуется сформировать отрицательную константу, то используют знак ‘-’ перед записью константы (который будем называть унарным минусом). Например: -0x2A, -088, -16, -5.7, -2е5.

Для представления констант можно использовать макроопределения. Макроопределение ассоциирует имя с определенным значением.

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

#define MAX_COST 100 // макроопределение

void main() {

const int count = 25; // типизированная константа

printf(“Стоимость всех вещей: :d”, MAX_COST * count);

}

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

Удобство именованных констант заключается в минимальных переделках программы, связанных с изменением этих констант (например, размерности массивов, константы точности). Если одна и та же константа используется в различных местах программы, то достаточно изменить одну строку программы с объявлением той или иной константы и не менять другие операторы, использующие эту константу.

Кроме естественного представления числовых констант в виде целого или вещественного числа мы уже использовали «префиксы» – добавки в начале константы (0х – для 16-ричного числа и 0 для восьмеричного числа).

Также в записи константы можно использовать «суффиксы» – добавки в конце константы. «Суффиксы» определяют тип константы:

  • 5U,5u – целое число без знака (суффикс – u или U, от Unsigned);

  • 5L,5l – длинное целое число (суффикс – l или L, от Long).

Использование «суффиксов» может понадобиться для определения преобразований, которые должны быть выполнены, если константа используется в выражениях.