§ 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.