- Любовные романы
- Фантастика и фэнтези
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
C++ - Страустрап Бьярн
Шрифт:
Интервал:
Закладка:
cout «„ inch «« " in = " «« inch*2.54 «« « cmn“;
правильно обрабатывает четыре входных значения различным образом. Строки печатаются буквально, тогда как целое inch и значение с плавающей точкой inch*2.54 преобразуются из их внутреннего представления в подходящее для человеческого глаза символьное представление.
В С++ есть несколько основных типов и несколько способов создавать новые. Простейшие виды типов С++ описываются в следующих разделах, а более интересные оставлены на потом.
1.3.1 Основные типы
Основные типы, наиболее непосредственно отвечающие средствам аппаратного обеспечения, такие:
char short int long float double
Первые четыре типа используются для представления целых, последние два – для представления чисел с плавающей точкой. Переменная типа char имеет размер, естественный для хранения символа на данной машине (обычно, байт), а переменная типа int имеет размер, соответствующий целой арифметике на данной машине (обычно, слово). Диапазон целых чисел, которые могут быть представлены типом, зависит от его размера (sizeof). В С ++ размеры измеряются в единицах размера данных типа char, поэтому char по определению имеет размер единица. Соотношение между основными типами можно записать так:
1=sizeof(char)«=sizeof(short) «= sizeof(int) «= sizeof(long) sizeof(float) «= sizeof(double)
В целом, предполагать что-либо еще относительно основных типов неразумно. В частности, то, что целое достаточно для хранения указателя, верно не для всех машин.
К основному типу можно применять прилагательное const. Это дает тип, имеющий те же свойства, что и исходный тип, за исключением того, что значение переменных типа const не может изменяться после инициализации.
const float pi = 3.14; const char plus = '+';
Символ, заключенный в одинарные кавычки, является символьной константой. Заметьте, что часто константа, определенная таким образом, не занимает память. Просто там, где требуется, ее значение может использоваться непосредственно. Константа должна инициализироваться при описании. Для переменных инициализация необязательна, но настоятельно рекомендуется. Оснований для введения локальной переменной без ее инициализации очень немного.
К любой комбинации этих типов могут применяться арифметические операции:
+ (плюс, унарный и бинарный) – (минус, унарный и бинарный) * (умножение) / (деление)
А также операции сравнения: == (равно) != (не равно) « (меньше) » (больше) «= (меньше или равно) »= (больше или равно)
Заметьте, что целое деление дает целый результат: 7/2 есть 3. Над целыми может выполняться операция % получения остатка: 7%2 равно 1.
При присваивании и арифметических операциях С++ выполнит все осмысленные преобразования между основными типами, чтобы их можно было сочетать без ограничений:
double d = 1; int i = 1; d = d + i; i = d + i;
1.3.2 Производные типы
Вот операции, создающие из основных типов новые типы:
* указатель на *const константный указатель на amp; ссылка на [] вектор* () функция, возвращающая
– * одномерный массив. Это принятый термин (например, вектора прерываний), и мы сочли, что стандартный перевод его как «массив» затуманит изложение. (прим. перев.)
Например:
char* p // указатель на символ char *const q // константный указатель на символ char v[10] // вектор из 10 символов
Все вектора в качестве нижней границы индекса имеют ноль, поэтому в v десять элементов: v[0]..v[9]. Функции объясняются в #1.5, ссылки в #1.9. Переменная указатель может содержать адрес объекта соответствующего типа:
char c; // ... p = amp;c; // p указывает на c
Унарное amp; является операцией взятия адреса.
1.4 Выражения и операторы
В С++ имеется богатый набор операций, с помощью которых в выражениях образуются новые значения и изменяются значения переменных. Поток управления в программе задается с помощью операторов, а описания используются для введения в программе имен переменных, констант и т.д. Заметьте, что описания являются операторами, поэтому они свободно могут сочетаться с другими операторами.
1.4.1 Выражения
В С++ имеется большое число операций, и они будут объясняться там, где (и если) это потребуется. Следует учесть, что операции
~ (дополнение) amp; (И) ^ (исключающее ИЛИ) ! (включающее ИЛИ) «„ (логический сдвиг влево) “» (логический сдвиг вправо) применяются к целым, и что нет отдельного типа данных для логических действий.
Смысл операции зависит от числа операндов. Унарное amp; является операцией взятия адреса, а бинарное amp; – это операция логического И. Смысл операции зависит также от типа ее операндов: + в выражении a+b означает сложение с плавающей токой, если операнды имеют тип float, но целое сложение, если они типа int. В #1.8 объясняется, как можно определить операцию для типа, определяемого пользователем, без потери ее значения, предопределенного для основных и производных типов.
В С++ есть операция присваивания =, а не оператор присваивания, как в некоторых языках. Таким образом, присваивание может встречаться в неожиданном контексте, например, x=sqrt(a =3*x). Это бывает полезно. a=b=c означает присвоение c объекту b, а затем объекту a. Другим свойством операции присваивания является то, что она может совмещаться с большинством бинарных операций. Например, x[i+3]*=4 означает x[i+3]=x[i+3]*4, за исключением того факта, что выражение x[i +3] вычисляется только один раз. Это дает привлекательную степень эффективности без необходимости обращения к оптимизирующим компиляторам. К тому же это более кратко.
В большинстве программ на С++ широко применяются указатели. Унарная операция * разыменовывает* указатель, т.е. *p есть объект, на который указывает p. Эта операция также называется косвенной адресацией. Например, если имеется char* p, то *p есть символ, на который указывает p. Часто при работе с указателями бывают полезны операция увеличения ++ и операция уменьшения –. Предположим, p указывает на элемент вектора v, тогда p++ делает p указывающим на следующий элемент.
– * англ. dereference – получить значение объекта, на который указывает данный указатель. (прим. перев.)
1.4.2 Операторы выражения
Самый обычный вид оператора – выражение;. Он состоит из выражения, за которым следует точка с запятой. Например:
a = b*3+c; cout «„ «go go go“; lseek(fd,0,2);
1.4.3 Пустой оператор
Простейшей формой оператора является оператор:
;
Он не делает ничего. Однако он может быть полезен в тех случаях, когда синтаксис требует наличие оператора, а вам оператор не нужен.
1.4.4 Блоки
Блок – это возможно пустой список операторов, заключенный в фигурные скобки:
(* a=b+2; b++; *)
Блок позволяет рассматривать несколько операторов как один. Область видимости имени, описанного в блоке, простирается до конца блока. Имя можно сделать невидимым с помощью описаний такого же имени во внутренних блоках.
1.4.5 Оператор if
Программа в следующем примере осуществляет преобразование дюймов в сантиметры и сантиметров в дюймы. Предполагаемся, что вы укажете единицы измерения вводимых данных, добавляя i для дюймов и c для сантиметров:
#include «stream.h»
main() (* const float fac = 2.54; float x, in, cm; char ch = 0;
cout «„ "введите длину: "; cin “» x »» ch;
if (ch == 'i') (* // inch – дюймы in = x; cm = x*fac; *) else if (ch == 'c') // cm – сантиметры in = x/fac; cm = x; *) else in = cm = 0;
cout «„ in «« " in = " «« cm «« « cmn“; *)
Заметьте, что условие в операторе if должно быть заключено в круглые скобки.