1.3 Базовые понятия языка Си*
1.3.1 Алфавит
Алфавит языка состоит из следующих символов:
•строчные и заглавные буквы латинского алфавита:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
•цифры: 0123456789
•специальные символы: " , { } | [ ] ( ) + - / % \ ; ' . : ? < = > _
! & * # ~ ^
•неотображаемые символы: пробел, табуляция, переход на новую строку (LF)
Примечание: в комментариях, строках и символьных константах могут использоваться другие буквы. Комментариями является всё, что находится между открывающими (/*) и закрывающими (*/) символами. Комментарии игнорируются компилятором. Это удобное средство добавить пояснения в код программы.
1.3.2 Лексемы#
Язык Си поддерживает шесть типов лексем:
1.Идентификаторы
2.Служебные слова
3.Константы
4.Строки
5.Операции
6.Разделители
Идентификатор – это последовательность букв, цифр и знаков подчёркивания (_), начинающаяся с буквы или символа подчёркивания. Заглавные и строчные буквы различаются, т.е. идентификаторы aSunnyDay, asummyday, asunnyDAY – различны (!). Длина идентификатора определяется стандартом языка Си, стандарт C99 позволяет использовать до 31 символа в имени (более раннии стандарты – до 8 символов). Идентификаторы используются для именования переменных.
Переменной в языке Си будем называть именованное местонахождение к хранилище (RAM) для хранения данных определённого вида. Это заместитель для данных, которые могут меняться.
Служебные слова – это идентификаторы, зарезервированные в языке, т.е. те, которые нельзя использовать в качестве свободно выбираемых имён:
auto |
continue |
enum |
break |
default |
extern |
case |
do |
float |
char |
double |
for |
const |
else |
goto |
* Материал изложен в соответствии с [1], [2].
# Лексема – единица лексического уровня языка, слово во всей совокупности его лексических значений
if |
static |
while |
int |
struct |
inline |
long |
switch |
restrict |
register |
typedef |
_Bool |
return |
union |
_Complex |
short |
unsigned |
_Imaginary |
signed |
void |
|
sizeof |
volatile |
|
Служебные слова по типу данных делят на спецификаторы типов и квалификаторы типов.
Таблица 1: Основные спецификаторы типов
Тип |
Описание |
|
|
|
Размер1 |
|
char |
символьный |
|
|
1 |
байт (8 бит) |
|
|
|
|
|
|
|
|
int |
Целое число |
|
|
4 |
байта (32 |
бита) |
|
|
|
|
|
|
|
float |
Вещественное |
число |
с |
4 |
байта (32 |
бита) |
|
плавающей точкой |
|
|
|
|
|
double |
Вещественное |
число |
с |
8 |
байт (64 бита) |
|
|
плавающей точкой двойной |
|
|
|
||
|
точности |
|
|
|
|
|
long |
Длинное целое |
|
|
4 |
байта (32 |
бита) |
|
|
|
|
|
|
|
short |
Короткое целое |
|
|
2 |
байта (16 |
бит) |
|
|
|
|
|
|
|
Таблица 2: Квалификаторы типов
Тип |
Описание |
|
|
const |
Квалификатор объекта, имеющего постоянное значение |
|
|
volatile |
Квалификатор объекта, значение которого может измениться |
|
без явных указаний программиста |
Константа по определению представляет значение, которое не может быть изменено. В синтаксисе языка определены пять типов констант: символы, константы перечислимого типа, вещественные константы, целые числа и нулевой указатель.
Символьные константы используются для отображения отдельных знаков, имеющих собственные внутренние коды: 'A','a','B','b' и т.п.Также используются специальные символьные константы, называемые управляющими последовательностями – наборы литер, начинающиеся со знака \. Список управляющих последовательностей приведён ниже (Таблица 3).
Символьная константа имеет целый тип, т.е. Символы можно использовать в качестве целочисленных операндов в выражениях.
1Размер памяти, выделяемый под данные того или иного типа, зависит от аппаратной и программной реализации. В таблице приведены наиболее типичные значения для 32-битной арифметики.
Таблица 3: Управляющие последовательности
Последоват |
Значение |
ельность |
|
|
|
\n |
Перевод строки |
|
|
\t |
Горизонтальная табуляция |
|
|
\r |
Возврат каретки к началу строки |
|
|
\\ |
Обратная косая черта |
|
|
\' |
апостроф |
|
|
\" |
кавычка |
|
|
\0 |
Нулевой символ |
|
|
\a |
Сигнал-звонок |
|
|
\b |
Возврат на одну позицию |
|
|
\f |
Прогон страницы |
|
|
\v |
Вертикальная табуляция |
|
|
\? |
Знак вопроса |
|
|
Нулевой указатель- именованная константа NULL.
Строки – определяются как последовательности символов, заключённые в двойные кавычки.
Операции. Операции делятся на унарные (одноместные) и бинарные (двухместные). Бинарные, в свою очередь, делятся на аддитивные ( + - ), мультипликативные (* /), сдвиговые, поразрядные, операции отношений ( > < и т.п.), логические, присваивания, выбора компонента структурированного объекта, операцию «запятая», скобки.
Разделители, или знаки пунктуации: [] () {} , ; : ... * = #.
Библиография
Керниган Б., Ритчи Д. Язык программирования Си. - СПб.: Невский диалект, 2001. Подбельский В.В., Фомин С.С. Программирование на языке Си. - М.: Финансы и статистика, 1998.
Прата С. Язык программирования Си. Лекции и упражнения. - М.: ДиаСофт, 2001.