Известные компиляторы языка си

§ Borland C++

§ C++ Builder

Microsoft Visual Studio

41. Элементы программы, написанной на языке Си.

Под алфавитом языка понимается набор символов, которые используются при написании программ. Язык Си включает в себя латинские буквы A..Z, a..z, а также символ «_», цифры 0-9. И 28 спец. символов :+,-,*, \,/,(,),[,],{,}, «.», «,» , #, $, , |, ^,?, !, %, ~, «;», «:», `, “.

Программа на языке Си представляет собой последовательность строк символов (не более 126 символов в строке) состоящих из лексем. Лексема – мин. ед. языка, имеющая самостоятельный смысл.

Типы лексем:

1.Зарезервированные (ключевые) слова(char, long, continue, return, else, float, for, if…)

2.Идентификаторы (имена) — для обозначения типов имен переменных, констант, ф-й. состоит из букв и цифр(max…elem)

3.Коментарии: многостр /*…*/ одностр //…//

4.Ограничители: ( ) { } [ ] : ;

5. Операции: 1.односимвольные ?=!+-/*%остаток от деления\~^.

2.многосимвольные == != = += -= *= /=

Отличаются либо разделителями (пробел, табуляция, перевод строки, возврат каретки) либо комментаторами.

\a Звонок
\b Возврат на шаг
\t Горизонтальная табуляция
\n Переход на новую строку 00A
\v Вертикальная табуляция 00B
\r Возврат каретки 00C
\f Перевод формата 00D
\ Кавычки
\’ Апостроф
\0 Ноль-символ
\\ Обратная дробная черта 05C
\ddd Символ набора кодов ПЭВМ в восьмеричном представлении
\xddd Символ набора кодов ПЭВМ в шестнадцатеричном представлении

42. Константы языка Си.

Константами называются перечисление величин в программе. В языке СИ разделяют четыре типа констант: целые константы, константы с плавающей запятой(вещественные), символьные константы и строковые.

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

Десятичная Восьмеричная Шестнадцатеричная

константа константа константа

16 020 0x10

127 0117 0x2B

240 0360 0XF0

Для того чтобы любую целую константу определить типом long, достаточно в конце константы поставить букву l или L. Пример:

5l, 6l, 128L, 0105L, OX2A11L.

Константа с плавающей точкой — десятичное число, представленное в виде действительной величины с десятичной точкой или экспонентой. Формат имеет вид:

[ цифры ].[ цифры ] [ Е|e [+|-] цифры ] .

Число с плавающей точкой состоит из целой и дробные части и (или) экспоненты. Константы с плавающей точкой представляют положительные величины удвоенной точности (имеют тип double). Для определения отрицательной величины необходимо сформировать константное выражение, состоящее из знака минуса и положительной константы.

Примеры: 115.75, 1.5Е-2, -0.025, .075, -0.85Е2

Символьная константа — представляется символом заключенном в апострофы. Управляющая последовательность рассматривается как одиночный символ, допустимо ее использовать в символьных константах. Значением символьной константы является числовой код символа. Примеры:

‘ ‘- пробел ,

‘Q’- буква Q ,

‘\n’ — символ новой строки ,

‘\\’ — обратная дробная черта ,

‘\v’ — вертикальная табуляция .

Символьные константы имеют тип int и при преобразовании типов дополняются знаком.

Строковая константа (литерал) — последовательность символов (включая строковые и прописные буквы русского и латинского а также цифры) заключенные в кавычки () . Например: Школа N 35, город Тамбов, YZPT КОД.

Отметим, что все управляющие символы, кавычка (), обратная дробная черта (\) и символ новой строки в строковом литерале и в символьной константе представляются соответствующими управляющими последовательностями. Каждая управляющая последовательность представляется как один символ. Например, при печати литерала Школа \n N 35 его часть Школа будет напечатана на одной строке, а вторая часть N 35 на следующей строке.

Символы строкового литерала сохраняются в области оперативной памяти. В конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0.

Строковый литерал имеет тип char[] . Это означает, что строка рассматривается как массив символов. Отметим важную особенность, число элементов массива равно числу символов в строке плюс 1, так как нулевой символ (символ конца строки) также является элементом массива. Все строковые литералы рассматриваются компилятором как различные объекты. Строковые литералы могут располагаться на нескольких строках. Такие литералы формируются на основе использования обратной дробной черты и клавиши ввод. Обратная черта с символом новой строки игнорируется компилятором, что приводит к тому, что следующая строка является продолжением предыдущей. Например:

строка неопределенной \n

длины

полностью идентична литералу

строка неопределенной длинны .

Для сцепления строковых литералов можно использовать символ (или символы) пробела. Если в программе встречаются два или более строковых литерала, разделенные только пробелами, то они будут рассматриваться как одна символьная строка. Этот принцип можно использовать для формирования строковых литералов занимающих более одной строки.

43. Система типов языка Си.

Тип(сорт)- относительно устойчивая независимая совокупность элементов, которую можно выделить во всем рассматриваемом множестве. Задается либо набором допустимых значений либо набором действий, которые можно совершить над каждой переменной действительного типа.

Типы языка Си:

—Пустой(void)

—Скалярные типы: —Указатели

—арифм. Типы:—Целые и вещественные.

— перечисления

—Функции

Комбинированные типы: — массивы и записи(структуры) и объединения.

Целые:

Тип Размер памяти в байтах Диапазон значений
char от -128 до 127
int Для IBM XT,AT,SX,DX 2
short от -32768 до 32767
long от -2 147 483 648 до 2 147 483 647
unsigned shar oт 0 до 255
unsigned int Для IBM XT,AT,SX,DX 2
unsigned short от 0 до 65535
unsigned long от 0 до 4 294 967 295

Данные плавающего типа

Для переменных, представляющих число с плавающей точкой используются следующие модификаторы-типа : float, double, long double (в некоторых реализациях языка long double СИ отсутствует).

Величина с модификатором-типа float занимает 32 бита. Из них 1 байт отводится для знака, 8 бит для избыточной экспоненты и 23 бита для мантиссы. Отметим, что старший бит мантиссы всегда равен 1, поэтому он не заполняется, в связи с этим диапазон значений переменной с плавающей точкой приблизительно равен от 3.14E-38 до 3.14E+38.

Величина типа double занимает 64 бит в памяти. Ее формат аналогичен формату float. Биты памяти распределяются следующим образом: 1 бит для знака, 11 бит для экспоненты и 52 бита для мантиссы. С учетом опущенного старшего бита мантиссы диапазон значений равен от 1.7E-308 до 1.7E+308.

Примеры:

float f, a, b; double x,y;

Указатель — это адрес памяти, распределяемой для размещения идентификатора (в качестве идентификатора может выступать имя переменной, массива, структуры, строкового литерала). В том случае, если переменная объявлена как указатель, то она содержит адрес памяти, по которому может находится скалярная величина любого типа. При объявлении переменной типа указатель, необходимо определить тип объекта данных, адрес которых будет содержать переменная, и имя указателя с предшествующей звездочкой (или группой звездочек). Формат объявления указателя:

спецификатор-типа [ модификатор ] * описатель .

Спецификатор-типа задает тип объекта и может быть любого основного типа, типа структуры, смеси (об этом будет сказано ниже). Задавая вместо спецификатора-типа ключевое слово void, можно своеобразным образом отсрочить спецификацию типа, на который ссылается указатель. Переменная, объявляемая как указатель на тип void, может быть использована для ссылки на объект любого типа. Однако для того, чтобы можно было выполнить арифметические и логические операции над указателями или над объектами, на которые они указывают, необходимо при выполнении каждой операции явно определить тип объектов. Такие определения типов может быть выполнено с помощью операции приведения типов.

В качестве модификаторов при объявлении указателя могут выступать ключевые слова const, near, far, huge. Ключевое слово const указывает, что указатель не может быть изменен в программе. Размер переменной объявленной как указатель, зависит от архитектуры компьютера и от используемой модели памяти, для которой будет компилироваться программа. Указатели на различные типы данных не обязательно должны иметь одинаковую длину.

Для модификации размера указателя можно использовать ключевые слова near, far, huge.

Программирование на языке C/C++. Урок #1: Введение в курс, установка среды и компилятора


Похожие статьи.

Понравилась статья? Поделиться с друзьями: