Константи

Константи являють собою фіксовані значення, що не мо­жуть змінюватися впродовж виконання всієї програми.

Спосіб визначення кожної константи залежить від її типу. Константи мови С++ слід поділяти на літеральні та типізовані.

Літеральна константа— це лексема, що являє собою зо­браження фіксованого числового, рядкового або символьного значення. Такі константи бувають цілі, дійсні, символьні та рядкові(табл. 3.2).

Таблиця 3.2

 

Літеральні константи мови

Константа

Формат

Приклади

Цiла Десятковий: послідовність десяткових цифр
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9),
що починається не з нуля, якщо це не число нуль
9, 0, 217925
Вісімковий: нуль, за яким розташова­ні вісімкові цифри
(0, 1, 2, 3, 4, 5, 6, 7)
02, 050, 07245
Шістнадцятковий: 0х чи 0Х, за яким розташовані шістнадцяткові цифри
(0, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F)
0x1B9, 0X00FF
Дійсна Десятковий:[цифри].[цифри]Експоненціальний:
[цифри][.][цифри]{Е|е}[+|-][цифри]
9.7, .001, 87. 0.7Е6, .15е-3 9.2, 920 е-2, 92.Е-1, .92Е1
Символьна Один чи два символи, що подаються в апострофах ‘А’ , ‘ю’ , ‘* ‘ , ‘db’ ,
’\0′, ‘\n’, ’\012′,
‘\х07\х07’
Рядкова Послідовність символів, що подають­ся в лапках “RESULT”,
“\t sum__s=\0x5\n”

 

Цілі константи можуть бути десятковими, вісімковими та шiстнадцятковими.

Довгі цілі константи (long) мають літеру l або L в кінці, наприклад: 32768L; 0777777l; 0XFL. Для завдання константи, без знака (unsigned) застосовується літера u (U),наприклад 65535u. Довгі константи без знака записуються з використанням двох літер відразу: (ul, UL) або (lu, LU).

Дійсні числа у мовах програмування мають дві форми подання: десяткову (природну) та експоненціальну (показникову).

Десяткова форма дійсного числа — це звичайний десятковий формат запису дійсного числа, тільки частина дійсного числа відділяється від дробової крапкою, а не комою, наприклад 10.123, 1.0123, 1012.3, 0.0010123.

Експоненціальна форма дійсного числа використовується для запису дуже великих або дуже малих чисел, для яких за­давати зайві нулі не зовсім зручно, наприклад: 1 .0123*1020,1.0123*10-10. У цій формі запису числа можна виділити такi основні характеристики: знак числа, мантису числа, знак порядку та порядок числа. Зазначені характеристики дійсного числа зберігаються у пам’яті комп’ютера. Число у показнико­вій формі може бути представлено, наприклад, так: 1.0123Е-10. Мантиса записується ліворуч від знака експоненти(Е чи е), порядок — праворуч. Символ Е (е) означає основу степеня 10, і компілятор розпізнає цей запис як форму представлення дійс­ного числа. Символ пропуску всередині числа не допускається, а для відділення цілої частини від дробової використовується не кома, а крапка. При додатних значеннях числа і мантиси знак «+» можна не вказувати.

Як десяткова, так і екcпоненціальна форми запису допуска­ють відсутність або цілої частини, або дробової, але не двох одразу.

За замовчуванням всі дійсні константи мають тип double— подвійну точність, що найчастіше займає в пам’яті 64 біти, тобтo 8 байтів. Але у випадку, якщо програміста не влаштовує тип за замовчуванням, його можна вказати явно за допомогою спе­ціальних літер. Так, додавши літеру f чи F, константі надають дійсний тип float зі звичайною точністю, наприклад, 8.5f. Якщо в представленні константи використовується літера L чи l, то вона має тип long double.

Зображення від’ємної цілої чи дійсної константи вважається константним виразом, що складається зі знака унарної операціi зміни знака (-) та константи, наприклад: -273, -2730.е-1, -273L.

Символьні константи мають один або два символи, що подаються в апострофах. Односимвольні константи займають у пам’яті один байт і мають стандартний тип char (character-символ). Двосимвольні константи займають два байти і мають тип int. Символьні константи мають цілий тип і їх можна ви­користовувати як цілочислові операнди у виразах.

Заслуговують уваги послідовності, що починаються зі знака «\», їх називають керуючими або escape-послідовностями. Символ зворотної косої риски «\» використовується для запису кодів,що не мають графічного зображення, для запису симво­лiв, а також для виведення символьних констант, якщо їх коди заданi у вісімковому та шістнадцятковому вигляді (табл. 3.3).

Таблиця 3.3

Керуючі послідовності мови С++

звуковий сигнал

\b

повернення на крок

\f

переведення сторінки (формату)

\n

новий рядок

\r

повернення каретки

\t

горизонтальна табуляція

\v

вертикальна табуляція

\\

символ \ — зворотна коса риска

\’

символ ‘ — апостроф

\”

символ ” — лапки

\0

нуль-символ

\?

знак питання

\0ddd

вісімковий код символу

\0xddd

шістнадцятковий код символу

Рядкова константа(рядковий літерал)— це послідовність cимволів,що подається в лапках (тобто в символах «”» )і збері­гаеться у неперервній ділянці пам’яті, наприклад: “Это строковый литерал”. У кінець кожного рядкового літералу компілятором додається нуль-символ,що предствляється керуючою послі­довністю «\0».Тому довжина рядка завжди на одиницю більше кількості символів у його записі. Таким чином, порожній рядок (” “) має довжину 1 байт. Слід звернути увагу на різницю між рядком з одного символу, наприклад, “С” і символьною конс­тантою ‘С’ . Порожня символьна константа неприпустима.

Керуючі послідовності можуть також застосовуватись у ряд­кових константах. Так, якщо всередині рядка потрібно записати лапки, то перед ними слід розташувати зворотну косу риску («\»), за якою компілятор відрізняє їх від лапок, що обмежують рядок:

“Книга имеет название \”Язык прогаммирования С++\” “.

Рядки,що записані у програмі підряд або через символи пропуску, при компіляції конкатенуються («склеюються»). Тоб­то послідовність двох рядків

“Уча других, мы учимся сами.”
“Успех —это успеть.”

цілком еквівалентна рядку:

“Уча других, мы учимся сами. Успех — это успеть.”.

Довгу рядкову константу можна розмістити також на декількох рядках. У цьому випадку ставиться зворотна коса рис­ка і натискається клавіша Enter. Наприклад:

“Компьютерная программа выполняет то, \
что вы ей приказали делать, а не то, \
что вы хотели, чтобы она делала.”

Поняття та приклади оголошення типізованої константи, тобто константи, що використовується як змінна, значення якoї не може бути змінене після ініціювання, розглянуті вище.

Існує інша можливість задання констант — з використан­ням директиви препроцесора #define,при цьому оголошення має вигляд:

#define ім’я константи значення константи

і наприкінці такого запису символ «;» не ставиться, тобто:

#define max 65532
#define km 1000.

Директива #define визначає ідентифікатор (ім’я констан­ти) і послідовність символів (значення константи), яка замінює ідентифікатор у тексті програми.

Нульовий покажчик (NULL-покажчик)— єдина неарифме­тична константа мови C++.

При застосуванні великої кількості логічно взаємозалежних констант C++ доцільно користуватися константами перелічення. Тип перелічення має вигляди:

enum {список іменованих констант};—неiменоване перелічення,
enum [ім’я] {список іменованих констант};—iменоване перелічення.

де  enum—службове слово(enumerate—перелічувати);
ім’я— ім’я списку констант;
список іменованих констант
— розділена комами послідов­нiсть iдентифікаторів або іменованих констант вигляду:

ім’я константи = значення константи.

Наприклад:

enum {Anton, Ivan, Piter};
enum Months {January = 1, February, Marth, April, May, June, July, August, September, October, November, December};

Якщо значення константи перелічення не визначено, то воно на одиницю більше значення попередньої константи. За замовчуванням перша константа має значення 0. Тоді у першому прикладі константи одержать значення:Anton = 0, Ivan = 1, Piter = 2, а у другому — значення: January = 1, February = 2, Marth= З тощо. Іменовані перелічення задають унікальний цілочисловий тип і можуть використовуватися як специфікації типу для визначення змінних.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *