Каждой целой константе присваивается тип, определяющий преобразования, которые должны быть выполнены, если константа используется в выражениях. Тип константы определяется следующим образом:
— десятичные константы рассматриваются как числа со знаком, и им присваивается тип int (целая) или long (длинное целая) в соответствии со значением константы. Если константа меньше 32768, то ей присваивается тип int в противном случае — long.
— восьмеричным и шестнадцатеричным константам присваивается тип int, unsigned int (беззнаковое целое), long или unsigned long в зависимости от значения константы согласно табл. 9.5.
Иногда требуется с самого начала интерпретировать константу как длинное целое число. Для того чтобы любую целую константу определить типом long, достаточно в конце константы поставить букву
51, 61, 128L, 0105L, 0x2A11L.
Примеры синтаксически недопустимых целочисленных констант:
12AF — шестнадцатеричная константа не имеет символов 0х в начале константы, поэтому по умолчанию для нее принимается десятичная система счисления, но тогда в ней присутствуют недопустимые символы. В результате эта последовательность символов будет восприниматься как идентификатор.
0x2ADG — символ
Кроме целых констант в языке программирования С-51 используются числовые константы с плавающей запятой.
Константа с плавающей запятой — это десятичное число, представленное в виде действительной величины с десятичной точкой и (или) той. Формат записи константы имеет вид:
[Цифры].[Цифры] ['Е'|'е' ['+'|'-'] Цифры]
Число с плавающей запятой состоит из целой и дробной частей и (или) экспоненты. Для определения отрицательного числа необходимо сформировать константное выражение, состоящее из знака минус и положительной константы. В языке программирования С-51, в отличие от стандартного языка С, константы с плавающей запятой представляются с одинарной точностью (имеют тип
115.75, 1.5Е-2, -0.025, 075, -0.85Е2
Символьная константа — представляется символом, заключенным в апострофы. Управляющая последовательность рассматривается как одиночный символ, поэтому ее допустимо использовать в символьных константах. Значением символьной константы является числовой код символа.
Примеры записи символьных констант:
' ' — пробел;
'Q' —буква Q;
'\n' — символ новой строки;
'\\' — обратная дробная черта;
'\v' — вертикальная табуляция.
Символьные константы в языке программирования С-51 имеют тип char, поэтому при использовании функций преобразования типов дополняются знаком. Символьные константы используются, например, при анализе управляющего кода, введенного с клавиатуры микропроцессорной системы. Пример использования символьной константы на языке программирования С-51 приведен ниже:
if (NajKn=='p') VklUstr();
В этом примере если в переменной
Строковая константа (литерал или литеральная строка) — это последовательность символов, включая строковые и прописные буквы русского и латинского алфавита, а также цифры, знаки пунктуации и разделители, заключенные в кавычки ("). Например: «школа n 35", «город Тамбов", «YZPT КОД".
Отметим, что все управляющие символы, кавычка ("), обратная дробная черта (\) и символ новой строки в литеральной строке и в символьной константе представляются соответствующими управляющими последовательностями. Каждая управляющая последовательность представляется как один символ. Например, при печати литеральной константы «школа \n N 35» ее часть «школа» будет напечатана на одной строке, а вторая часть «n 35» на следующей строке.
Символы литеральной строки хранятся в памяти программ, но могут храниться и в памяти данных. В конец каждой литеральной строки компилятором добавляется нулевой символ, который можно записать как: «\0". Именно этот символ и является признаком конца строки.