Константами називаються перелік величин в програмі. У мові Сі розділяють чотири типи констант: цілі константи, константи з плаваючою комою, символьні константи і рядковими літерали.

Ціла константа: це десяткове, вісімкове або шістнадцяткове число, яке подає цілу величину у відповідній формі.

Десяткова константа складається з однієї або декількох десяткових цифр, причому перша цифра не повинна бути нулем (інакше число буде сприйняте як вісімкове).

Вісімкова константа складається з обов’язкового нуля і однієї або декількох вісімкових цифр (без вісімок і дев’яток, оскільки ці цифри не входять у вісімкову систему числення).

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

Таблиця 5.

Десяткова константа Вісімкова константа Шістнадцяткова константа
16 020 0x10
127 0117 0x2B
240 0360 0XF0

Якщо вимагається сформувати від’ємну цілу константу, то використовують знак “-” перед записом константи (який називатиметься унарним мінусом). Наприклад: -0x2A, -088, -16.

Кожній цілій константі своюється тип, що визначає перетворення, які повинні бути виконані, якщо константа використовується у виразах. Тип константи визначається таким чином:

  • десяткові константи розглядаються як величини із знаком, і їм присвоюється тип int (ціла) або long (довга ціла) відповідно до значення константи. Якщо константа менше 32768, то їй присвоююється тип int інакше long.
  • вісімковим і шістнадцятковим константам присвоюється тип int, unsigned int (беззнакове ціле), long або unsigned long залежно від значення константи згідно табл 6.

Таблиця 6

Діапазон шістнадцяткових констант Діапазон вісімкових констант Тип
0x0 - 0x7FFF 0 – 077777 int
0X8000 - 0XFFFF 0100000 – 0177777 unsigned int
0X10000 - 0X7FFFFFFF 0200000 – 017777777777 long
0X80000000 - 0XFFFFFFFF 020000000000 - 037777777777 unsigned long

Для того, щоб будь-яку цілу константу визначити типом long, достатньо в кінці константи поставити букву “l” або “L”.

Наприклад: 5l, 6l, 128L, 0105L, OX2A11L.

Константа з плаваючою крапкою – десяткове число, подане у вигляді дійсної величини з десятковою крапкою або експонентою. Формат має вигляд:

[ цифри ].[ цифри ] [ Е|e [+|-] цифри ] .

Число з плаваючою крапкою складається з цілої і дробові частини і (або) експоненти. Константи з плаваючою крапкою представляють додатні величини подвійної точності (мають тип double). Для визначення від’ємної величини необхідно сформувати константний вираз, що складається із знаку мінуса і додатної константи.

Приклади: 115.75, 1.5Е-2, -0.025, .075, -0.85Е2

Символьна константа – подається символом розміщеному в апострофах. Керуюча послідовність розглядається як одинарний символ, допустимо її використовувати в символьних константах. Значенням символьної константи є числовий код символу.

Приклади:

– пропуск,

Q – буква Q,

\n – символ нового рядка,

\\ – зворотна дробова риска,

\v – вертикальна табуляція .

Символьні константи мають тип int і при перетворенні типів доповнюються знаком.

Рядкова константа (літерал) – послідовність символів укладені в лапки (") . Наприклад: “Школа № 35”, “місто Лондон”, “YZPT ВЕРСІЯ”.

Відзначимо, що всі керуючі символи, лапка ("), зворотна дробова риска () і символ нового рядка в рядковому літералі і в символьній константі подається відповідними керуючими послідовностями. Кожна Керуюча послідовність представляється як один символ. Наприклад, при друці літерала “Школа \n № 35” його частина “Школа” буде надрукована на одному рядку, а друга частина “№ 35” на наступному рядку.

Символи рядкового літералу зберігаються у області оперативної пам’яті. У кінець кожного рядкового літералу компілятором додається нульовий символ, що задається керуючою послідовністю \0.

Рядковий літерал має тип char[]. Це означає, що рядок розглядається як масив символів. Відзначимо важливу особливість, число елементів масиву рівне числу символів в рядку плюс 1, оскільки нульовий символ (символ кінця рядка) також є елементом масиву. Всі рядкові літерали розглядаються компілятором як різні об’єкти. Рядкові літерали можуть розташовуватися на декількох рядках. Такі літерали формуються на основі використання зворотної дробової риски і клавіші введення. Зворотна риска с символом нового рядка ігнорується компілятором, що призводить до того, що наступний рядок є продовженням попередньої. Наприклад:

*“рядок невизначеної *

довжини”

повністю ідентична літералу

“рядок невизначеної довжини”.

Для зчеплення рядкових літералів можна використовувати символ (або символи) пропуску. Якщо в програмі зустрічаються два або більш рядкових літерали, розділені тільки пропусками, то вони розглядатимуться як один символьний рядок. Цей принцип можна використовувати для формування рядкових літералів довжиною більше одного рядка.