Nickolay.info. Обучение. Лекции по Си. Глава 2

2. Алфавит языка Си

 

Константа в Си может представлять собой число, символ или строку символов.

Целочисленные константы записываются, в зависимости от используемой системы счисления, в одной из следующих форм:

·       десятичная: цифры от 0 до 9 со знаком "+", "-" или без знака. Примеры: 15, -305.

·       восьмеричная: лидирующий 0, далее цифры от 0 до 7. Примеры: 0777, 0150.

·       шестнадцатеричная:   лидирующий 0, далее символ "x" или "X", затем цифры от 0 до 9 и/или символы AF или af. Примеры: 0x10, 0XFF.

Целочисленные константы могут иметь тип данных int (целочисленный) или long (длинный целый).

Программист может явно определить для любой целочисленной константы тип long, дописав символ l или L в конец константы. Реализован также суффикс U или u, означающий, что константа имеет тип unsigned (беззнаковый). Можно использовать одновременно оба суффикса - L и U - для одной и той же константы: 15L, 1e6UL, 0xFFFFul.

Константы с плавающей точкой имеют следующую общую форму записи:

[+ или -][цифры].[цифры][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

Вертикальная табуляция

\b

08

Забой (backspace)

\r

0D

Возврат каретки

\f

0C

Новая страница

07

Звуковой сигнал

\'

Апостроф

\"

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

 

 

Рейтинг@Mail.ru
вверх гостевая; E-mail