В языке C константа представляет собой фиксированную величину, которая не может быть изменена в программе. В языке C определены 4 типа констант:
- целые числа (базовый тип – int);
- вещественные числа (базовые типы – float, double);
- символьные (базовый тип – char);
- строковые (массив символов).
Целые константы – натуральные числа. В языке C используются числа в восьмеричной, десятичной и шестнадцатеричной системах счисления. Чтобы отличать восьмеричные и шестнадцатеричные константы от десятичных, перед восьмеричными константами ставится ноль, а перед шестнадцатеричными – пара символов ‘0x’.
Пример 1
Тип данных
| Восьмеричная константа
| Десятичная константа
| Шестнадцатеричная константа
|
int
|
|
|
|
int
|
|
| 7B
|
short int
| -473
| -315
| -13B (FEC5)
|
unsigned int
|
|
| CC4C
|
long int
|
|
| 124F8
|
Любая целая константа всегда считается неотрицательной, таким образом, минус перед константой воспринимается как унарная операция смены знака.
Вещественные константы – вещественные числа в десятичной системе счисления.
Пример 2
Тип данных
| Константа
|
float
| 14.9
|
float
| -0.516
|
float
| -2.5e-7
|
double
| 14.9
|
double
| -4.96e-19
|
double
|
|
Символьные константы – целые числа, значения которых соответствует ASCII-коду символа. Символьные константы заключаются в одинарные кавычки. В качестве символьной константы может выступать escape-последовательность, также взятая в одинарные кавычки.
Пример 3
Тип данных
| Константа
| ASCII-код
|
char
| ‘a’
|
|
char
| ‘\n’
|
|
char
| ‘9’
|
|
Строковые константы – это группа (массив) символов в количестве от 0 до произвольного числа n, заключённая в двойные кавычки и заканчивающаяся нулевым байтом. В строковую константу могут входить escape-последовательности.
Пример 4.
“Это - \n строковая константа”
Строковая константа в программе может быть записана в двух или более строках, но при выводе на консоль в рабочем режиме программы она будет выведена в одну строку, если для переноса на другую строку используются знаки ‘\<Enter>’, так как под символы ‘\<Enter>’ память не отводится.
Пример 5.
printf (“Эта строковая константа\
при выводе на консоль\
будет записана в одну строку”);
Если несколько строк записаны без разделителя или через разделители пробел, Enter или табуляция, то компилятор объединит их в одну строку.
Пример 6.
"Hel" "lo, "
"Wor" "ld""!"
Особенностью представления строковых констант в языке C является то, что под строковую константу компилятор отводит на один байт больше, чем число символов в константе. Этот дополнительный байт всегда является в константе последним и заполняется нулевым значением ‘\0’.
Пример 7
H
| e
| l
| l
| o
| ,
|
| W
| o
| r
| l
| d
| !
| ‘\0’
|
Под разделительные символы (пробел, Enter, табуляция), присутствующие в строке, также отводятся соответствующие байты.
Правила определения типа константы.
Целая константа относится к типу int, если эта константа входит в интервал значений типа int. Если эта константа не входит в интервал значений типа int, то она считается константой типа unsigned int, если же она не входит в интервал unsigned int, то она считается константой типа long int, если же она не входит в интервал long int, то она считается константой типа unsigned long int.
Константа с десятичной точкой считается константой типа double, если она помещается в соответствующий интервал изменения.
Константы символьного и строкового типов задаются явно.
В языке C имеется механизм явного задания типов констант с помощью суффиксов. В качестве суффиксов для целочисленных констант могут использоваться u, l, h, U, L, H, для вещественных констант – l, f, L, F.
Пример 8
Тип данных
| Константы
|
short int
| 12h, 34H
|
long int
| 23L, -237l
|
unsigned int
| 17u, 456U
|
unsigned long int
| 89lu, 89Lu, 89ul, 7UL, 7Ul
|
unsigned short int
| 45uh, 45uH
|
float
| 23.4F, -67.7E-24f
|
long double
| 1.39l, 12.0L
|