Предыдущая статья: “Язык С: переменные”
Константы — фиксированные величины, которые не изменяются во время выполнения программы. Эти фиксированные величины также называются литералами.
Константы могут относиться к любому из основных типов данных, например:
- целочисленная константа;
- константа с плавающей точкой;
- символьная константа;
- строковый литерал.
Используются также перечислимые константы.
С константами обращаются так же, как и с обычными переменными. Только значения констант не могут быть изменены после их определения.
Целочисленные литералы
Целочисленный литерал может быть десятичной, восьмеричной или шестнадцатеричной константой. Префикс определяет основание (радикс) целочисленной константы:
- 0x или 0X — шестнадцатеричной;
- 0 — восьмеричной;
- отсутствие префикса — десятичной.
Целочисленный литерал может также иметь суффикс. Он представляет собой комбинацию букв U и L, означающих целое беззнакового и длинного типа (соответственно). Суффикс может быть прописной или строчной буквой и располагаться в любом порядке.
Вот несколько примеров целочисленных литералов:
212 /* верно */
215u /* верно */
0xFeeL /* верно */
078 /* неверно: 8 - не восьмеричное число */
032UU /* неверно: нельзя повторять суффикс */
Ниже приведены другие примеры различных типов целочисленных литералов:
85 /* десятичный */
0213 /* восьмеричный */
0x4b /* шестнадцатеричный */
30 /* целочисленный */
30u /* беззнаковый целочисленный */
30l /* длинный */
30ul /* беззнаковый длинный */
Литералы с плавающей точкой
Литерал с плавающей точкой состоит из целой части, десятичной точки, дробной части и экспоненты. Литералы с плавающей точкой можно представлять либо в десятичной форме, либо в экспоненциальной.
При представлении десятичной формы включают десятичную точку, экспоненту либо и то, и другое; а при представлении экспоненциальной формы — целую часть, дробную часть либо обе части. Знаковая экспонента обозначается символом e или E.
Вот примеры литералов с плавающей точкой:
3.14159 /* верно */
314159E-5L /* верно */
510E /* неверно: неполная экспонента */
210f /* неверно: отсутствует десятичная точка или экспонента */
.e55 /* неверно: отсутствует целая часть или дробь */
Символьные константы
Символьные литералы заключаются в одинарные кавычки; например, ‘x’ может храниться в простой переменной типа char.
Символьный литерал может быть:
- обычным символом (например, ‘x’);
- управляющей последовательностью (например, ‘\t’);
- универсальным символом (например, ‘\u02C0’).
В языке С есть определенные символы, которые имеют особое значение, когда им предшествует обратный слэш, например, новая строка (\n) или табуляция (\t).
Вот список таких кодов управляющей последовательности:
- \\ — символ \
- \’ — символ ‘
- \” — символ “
- \? — символ ?
- \a — звуковой сигнал
- \b — возврат на одну позицию (backspace)
- \f — смена страницы
- \n — новая строка
- \r — возврат каретки
- \t — горизонтальная табуляция
- \v — вертикальная табуляция
- \ooo — восьмеричное число (от одной до трех цифр)
- \xhh … … — шестнадцатеричное число (из одной или нескольких цифр)
Ниже приведен пример, показывающий несколько символов управляющей последовательности:
#include <stdio.h>
int main() {
printf("Hello\tWorld\n\n");
return 0;
}
Когда приведенный выше код компилируется и выполняется, выдается следующий результат:
Hello World
Строковые литералы
Строковые литералы (константы) заключаются в двойные кавычки “”. Строка содержит символы, похожие на символьные литералы:
- обычные символы;
- управляющие последовательности;
- универсальные символы.
Можно разбить длинную строку на несколько строк, используя строковые литералы и разделяя их пробельными символами.
Вот примеры строковых литералов. Все три формы являются идентичными строками:
"hello, dear"
"hello, \
dear"
"hello, " "d" "ear"
Определение констант
В языке С есть два простых способа определения констант:
- Использование препроцессора #define.
- Использование ключевого слова const.
Препроцессор #define
Ниже приведена форма использования препроцессора #define для определения константы:
#define identifier value
Следующий пример детально объясняет эту форму:
#include <stdio.h>
#define LENGTH 10
#define WIDTH 5
#define NEWLINE '\n'
int main() {
int area;
area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);
return 0;
}
Когда приведенный выше код компилируется и выполняется, выдается следующий результат:
value of area : 50
Ключевое слово const
Префикс const используется для объявления констант с определенным типом следующим образом:
const type variable = value;
Пример, указанный ниже, детально объясняет эту форму:
#include <stdio.h>
int main() {
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = '\n';
int area;
area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);
return 0;
}
Когда приведенный выше код компилируется и выполняется, выдается следующий результат:
value of area : 50
Обратите внимание: хорошей практикой программирования является определение констант в ЗАГЛАВНЫХ БУКВАХ.
Читайте также:
- Основы программирования на Ruby
- Генерировать случайные числа гораздо сложнее, чем вы думаете
- Теория игр
Читайте нас в Telegram, VK и Яндекс.Дзен