Pers.narod.ru. Обучение. Лекции по Си. Глава 2 |
Константа в Си может представлять собой число, символ или строку символов.
Целочисленные константы записываются, в зависимости от используемой системы счисления, в одной из следующих форм:
· десятичная: цифры от 0 до 9 со знаком "+", "-" или без знака. Примеры: 15, -305.
· восьмеричная: лидирующий 0, далее цифры от 0 до 7. Примеры: 0777, 0150.
· шестнадцатеричная: лидирующий 0, далее символ "x" или "X", затем цифры от 0 до 9 и/или символы A‑F или a‑f. Примеры: 0x10, 0XFF.
Целочисленные константы могут иметь тип данных int (целочисленный) или long (длинный целый).
Программист может явно определить для любой целочисленной константы тип long, дописав символ l или L в конец константы. Реализован также суффикс U или u, означающий, что константа имеет тип unsigned (беззнаковый). Можно использовать одновременно оба суффикса - L и U - для одной и той же константы: 15L, 1e6UL, 0xFFFFul.
Константы с плавающей точкой имеют следующую общую форму записи:
[+ или -][цифры].[цифры][E][+ или -][цифры]
Здесь E - признак экспоненциальной формы записи, задаваемый символом Е или е. Либо целая, либо дробная часть константы могут быть опущены, но не обе сразу. Либо десятичная точка с дробной частью, либо экспонента могут быть опущены, но не обе сразу. Примеры: -2.251e6, .45, 1.E‑03, 1e‑30.
Символьная константа - это буква, цифра, знак пунктуации или специальный символ, заключенный в апострофы: 'c'. Значение символьной константы равно ASCII‑коду представляемого ею символа. Символ c может быть любым, за исключением апострофа ' (записывается как '\''), обратного слеша \ ('\\') и новой строки ('\n'). Примеры символьных констант приведены в табл. 2.1.
Таблица 2.1 Примеры символьных констант
Константа |
Значение |
'а' |
Малая латинская буква а |
'\007' |
Символ с кодом 7 ("звонок") |
'\b' |
Символ "забой" (BackSpace) |
'\х1В' |
Символ ESC в коде ASCII |
Символьные константы имеют тип char или int. Младший байт хранит код символа, а старший байт, если он есть, - знаковое расширение младшего байта.
Множество символов языка Си включает символы ASCII‑кода, при этом прописные и строчные буквы различаются компилятором в любом контексте.
Разделителями языка являются символы пробела, табуляции, перевода строки, возврата каретки, новой страницы, вертикальной табуляции и комментариев (см. табл. 2.2).
Специальные символы предназначены для представления пробельных и неграфических знаков в символьных константах и строках. Специальный символ состоит из обратного слэша, за которым следует либо буква, либо знаки пунктуации, либо комбинация цифр. Специальные символы языка Си перечислены в табл.2.2.
Таблица 2.2. Специальные символы языка Си
Специальный символ |
16‑ричная запись в коде ASCII |
Наименование |
\n |
0A |
Новая строка (перевод строки) |
\t |
09 |
Горизонтальная табуляция |
\v |
0В |
Вертикальная табуляция |
\b |
08 |
Забой (backspace) |
\r |
0D |
Возврат каретки |
\f |
0C |
Новая страница |
\а |
07 |
Звуковой сигнал |
\' |
2С |
Апостроф |
\" |
22 |
Двойная кавычка |
\\ |
5C |
Обратный слеш |
\ddd |
|
Байтовое восьмеричное значение |
\xdd |
|
Байтовое шестнадцатеричное значение |
Стандартные библиотечные функции ввода и вывода текстовой информации обычно рассматривают пару символов \r\n как один символ.
Конструкция \ddd позволяет задать произвольное байтовое значение как последовательность от одной до трех восьмеричных цифр. Конструкция \xdd позволяет задать произвольное байтовое значение как последовательность от одной до двух шестнадцатеричных цифр
Нулевой код может быть записан как \0 или \х0.
Символ <Ctrl>+<Z> (шестнадцатеричный код 1А) рассматривается как индикатор конца файла (символ EOF).
Комментарии компилятор Си также рассматривает как пробельные символы. Определены комментарии двух видов:
· /* многострочный */. Комментируется весь текст после комбинации символов /* до первой встретившейся комбинации */. Вложение многострочных комментариев опционально, т.е., зависит от настройки компилятора, поэтому не рекомендуется.
· // однострочный. Комментируется текст после комбинации символов // до конца строки.
Символьная строка - это последовательность символов, заключенная в двойные кавычки. В Си строка рассматривается как массив символов, каждый элемент которого представляет отдельный символ. Строка может содержать произвольное (в том числе нулевое) количество представимых символов, за исключением двойной кавычки ("), обратного слэша (\) и новой строки. Примеры: "Это символьная строка\n", "Первый \\ Второй".
Для формирования символьных строк, занимающих несколько строк текста программы, используется комбинация символов "обратный слеш" и "новая строка":
printf ("\nHello,\
world");
Нулевой символ ('\0') автоматически добавляется в качестве последнего байта символьной строки и служит признаком ее конца. Таким образом, строка из N символов занимает N+1 байт памяти. В отличие от Паскаля, длина строки нигде не хранится. Каждая символьная строка в программе рассматривается как отдельный объект. Тип строки - массив элементов символьного типа данных char.
К идентификаторам относятся имена переменных, функций и меток в программе на Си.
Идентификатор Си - это последовательность из одной или более латинских букв, цифр и символов подчеркивания, которая начинается с буквы или символа подчеркивания. Допускается любое число символов в идентификаторе, однако только первые 32 символа рассматриваются компилятором как значащие.
При использовании подчеркивания в качестве первого символа идентификатора необходимо соблюдать осторожность, поскольку такие идентификаторы могут совпасть (войти в конфликт) с именами "скрытых" библиотечных функций.
Компилятор языка Си не допускает использования идентификаторов, совпадающих по написанию с ключевыми словами. Так, идентификатор do недопустим, однако Do или DO возможен.
Ключевые слова - это предопределенные идентификаторы, которые имеют специальное значение для компилятора Си. Их использование строго регламентировано. При необходимости можно с помощью директивы препроцессора #define определить для ключевых слов другие имена. В общем случае директива #define располагается на отдельной строке и имеет вид
#define НовоеКлючевоеСлово ИдентификаторСи
Примеры:
#define boolean int
#define begin {
#define word unsigned int
гостевая; E-mail |