190 likes | 382 Views
Лекция 2. Структура С++. Алфавит С++. Ключевые слова Специальные символы и операторы Идентификаторы (имена). Ключевые слова. asm auto bool b reak case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern
E N D
Лекция 2 Структура С++
Алфавит С++ • Ключевые слова • Специальные символы и операторы • Идентификаторы (имена)
Ключевые слова asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while
Символы и операторы { } [ ] # ## ( ) ; : ? :: . .* + - * / % ^ & | ~ ! = < > <= >= += -= *= /= %= ^= &= |= <<= >>= << >> == != <= >= && || ++ -- , -> ->* ... <: :> <% %> %:%: %:
Идентификаторы Идентификаторы – символьные имена меток, функций, переменных или типов. Правила именования: • Состоит только из букв латинского алфавита, цифр или символа ‘_’ • Начинается не с цифры • Не совпадает с ключевым словом
Типы данных Простые: • Логический тип • Символьный тип • Целые типы • Типы с плавающей точкой • Перечислимые типы • Пустой тип Адресные: • Указатели • Массивы • Ссылки • Составные: • Структуры и классы • Объединения
Целые типы • Наименования типа [модиф. знака][модиф. размера]int • Модификаторы знака signed, unsigned • Модификаторы размера short, long • Размеры sizeof(char) ≤sizeof(short) ≤sizeof(int) ≤sizeof(long) sizeof(N) = sizeof(signed N) = sizeof(unsigned N) Обычно sizeof(short) = 2 байта sizeof(int) = 4 байта sizeof(long) = 4 байта
Целые литералы Литерал типа – конструкция языка, задающая некоторое значение данного типа • Разрядность • десятичные ( 10, 11, 12, … ) • восьмеричные ( 012, 013, 014, … ) • шестнадцатеричные ( 0xA, 0xB, 0xC, … ) • Модификаторы размера и знака • постфикс U (unsigned) Пример: 3U • постфикс L (long) Пример:12L • можно сочетать Пример: 34UL
Символьный тип • Наименования типа [модиф. знака] char wchar_t • Модификаторы знака signed, unsigned • Размеры sizeof(char) ≤sizeof(wchar_t) ≤sizeof(long) Обычно sizeof(char) = 1 байт sizeof(wchar_t) = 2 байта
Символьные литералы Символьный литерал – символ, заключенный в одиночные кавычки, например ‘q’ или ‘8’ Специальные литералы: ‘\n’ – перевод строки ‘\0’ – нулевой литерал‘\t’ – табуляция ‘\\’ – обратный слэш Тип литерала ‘c’ – charL‘c’ – wchar_t
Логический тип • Наименование типа bool • Принимаемые значения true, false • Размер типа 1≤ sizeof(bool) ≤sizeof(long) Обычно: 1 байт • Особенности bool c = 7 ; (cравноtrue ) int n = true ;(n равно1)
Типы с плавающей точкой • Наименования типа float, double, long double • Размеры sizeof(float) ≤sizeof(double) ≤sizeof(long double) Обычно sizeof(float) = 4 байта ( 7 дес. знаков) sizeof(double) = 8байт (15 дес. знаков) sizeof(long double) = 10байт (19 дес. знаков)* *Чаще встречается sizeof(long double) == sizeof(double) == 8
Литералы с плавающей точкой • Десятичный формат <целаячасть>.<дробная часть>[модификатор] Пример: 12.379 3.141592 • Экспоненциальный формат <целая>.<дробная>e<степень>[модификатор] Пример: 1e5 1.23e-4 • Модификаторы 1.27 – тип double 1.27F – тип float 1.27L – тип long double • Сокращенная запись .5 12.
Пустой тип void • Является простым типом, но может являться только частью более сложного • Невозможно создать объект типа void • Означает «неопределенный тип» или «отсутствие типа» void f () {} – функция, не возвращающая никакого значения void* x – указатель на данные неопределенного типа
Перечисления • Задают набор значений. Переменные этого типа могут принимать только значения из заданного списка • Значениями перечисления являются именованные константы. Им ставятся в соответствие целые числа, начиная с нуля.Соответствие может быть задано, в этом случае для следующих констант это значение увеличивается на 1. • Размер типа – достаточный для хранения численных эквивалентов значений, но не более sizeof(int) • Тип константы – имя перечисления (в примере тип A – безымянный, тип Two – Numbers) enum { A, B, C, }; // A = 0 // B = 1 enum Numbers { One = 1, Two, Four = 4, }; // Two = 2
Объявление переменных простых типов Форматобъявления [модификаторы]<тип><имя>[инициализатор]; Множественное объявление [модификаторы]<тип><имя>[иниц.],<имя>[иниц.]; Инициализатор: = значение или (значение)
Примеры объявлений Полное объявление Неполные объявления Множественное объявление Идентично static const unsigned short int a = 10 ; static const unsigned int c = 8, b = 9 ; int a ; float f = 1.37 ; unsigned short intq ; char c ( ‘m’ ); char b, r = ‘w’ ; char b; char r = ‘w’ ;
Объявление перечислений Внутри базового типа С инициализацией По имени типа enumStates { None, Half, Full }; States state = Half ; enum { None, Half, Full } state ; enum { None, Half, Full } state = Half ;
Синонимы типов Ключевое слово typedef перед объявлениемвводит новое имя типа. Взаимозаменяемо с некоторыми конструкциями языка. Является синонимом типа, а не новым типом! enumStates { None, Half, Full }; typedef unsigned intuint ; typedef unsigned short intWORD ; typedefenum { None, Half, Full } States;