Стенли Липпман - Язык программирования C++. Пятое издание

Тут можно читать онлайн Стенли Липпман - Язык программирования C++. Пятое издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Издательский дом Вильямс, год 2014. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Язык программирования C++. Пятое издание
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс
  • Год:
    2014
  • Город:
    Москва
  • ISBN:
    978-5-8459-1839-0
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Стенли Липпман - Язык программирования C++. Пятое издание краткое содержание

Язык программирования C++. Пятое издание - описание и краткое содержание, автор Стенли Липпман, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!
Вы держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под
. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. В соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.
С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать их наилучшие способы применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.
Стенли Б. Липпман Жози Лажойе Барбара Э. Му • Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием
• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования
• Изучите принципы и узнайте почему язык С++11 работает именно так
• Воспользуйтесь множеством перекрестных ссылок, способных помочь вам объединить взаимосвязанные концепции и проникнуть в суть
• Ознакомьтесь с современными методиками обучения и извлеките пользу из упражнений, в которых подчеркиваются ключевые моменты, позволяющие избежать проблем
• Освойте лучшие методики программирования и закрепите на практике изученный материал
Исходный код примеров можно загрузить с веб-страницы книги на сайте издательства по адресу: http://www.williamspublishing.com

Язык программирования C++. Пятое издание - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования C++. Пятое издание - читать книгу онлайн бесплатно, автор Стенли Липпман
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

1UL << 27 // создает значение только с одним установленным битом

// в позиции 27

Первоначально переменная 1ULимеет 1 в самом младшем бите и по крайней мере 31 нулевой бит. Она определена как unsigned long, поскольку тип intгарантированно имеет только 16 битов, а необходимо по крайней мере 27. Это выражение сдвигает 1 на 27 битовых позиций, вставляя в биты позади 0.

К этому значению и значению переменной quiz1применяется оператор OR. Поскольку необходимо изменить значение самой переменной quiz1, используем составной оператор присвоения (см. раздел 4.4):

quiz1 |= 1UL << 27; // указать, что ученик номер 27 сдал контрольную

Оператор |=выполняется аналогично оператору +=.

quiz1 = quiz1 | 1UL << 27; // эквивалент quiz1 |= 1UL << 21;

Предположим, что учитель пересмотрел контрольные и обнаружил, что ученик 27 фактически списал работу. Теперь учитель должен сбросить бит 27 в 0. На сей раз необходимо целое число, бит 27 которого сброшен, а все остальные установлены в 1. Применение побитового AND к этому значению и значению переменной quiz1позволяет сбросить только данный бит:

quiz1 &= ~(1UL << 27); // ученик номер 27 не прошел контрольную

Мы получаем значение со всеми установленными битами, кроме бита 27, инвертируя предыдущее значение. У него все биты были сброшены в 0, кроме бита 27, который был установлен в 1. Применение побитового NOT к этому значению сбросит бит 27, а все другие установит. Применение побитового AND к этому значению и значению переменной quiz1оставит неизменными все биты, кроме бита 27.

И наконец, можно узнать, как дела у ученика 27:

bool status = quiz1 & (1UL << 27); // как дела у ученика 27?

Здесь оператор AND применяется к значению с установленным битом 27 и значением переменной quiz1. Результат отличен от нуля (т.е. истинен), если бит 27 в значении переменной quiz1установлен; в противном случае он нулевой.

картинка 134Операторы сдвига (они же ввода и вывода) имеют левосторонний порядок

Хотя многие программисты никогда не используют побитовые операторы непосредственно, почти все они использует их перегруженные версии в виде операторов ввода и вывода. Перегруженный оператор имеет тот же приоритет и порядок, что и его встроенная версия. Поэтому программисты должны иметь понятие о приоритете и порядке операторов сдвига, даже если они никогда не используют их встроенные версии.

Поскольку операторы сдвига имеют левосторонний порядок, выражение

cout << "hi" << " there" << endl;

выполняется так:

( (cout << "hi") << " there" ) << endl;

В этом операторе операнд "hi"группируется с первым символом <<. Его результат группируется со вторым, а его результат с третьим символом.

Приоритет операторов сдвига средний: ниже, чем у арифметических операторов, но выше, чем у операторов отношения, присвоения и условных операторов. Эти различия в уровнях приоритета свидетельствуют о том, что для правильной группировки операторов с более низким приоритетом следует использовать круглые скобки.

cout << 42 + 10; // ok: приоритет + выше, поэтому выводится сумма

cout << (10 < 42); // ok: группировку определяют скобки; выводится 1

cout << 10 < 42; // ошибка: попытка сравнить cout с 42!

Последний оператор coutинтерпретируется так

(cout << 10) < 42;

Он гласит: "записать 10 в поток cout, а затем сравнить результат (т.е. поток cout) со значением 42".

Упражнения раздела 4.8

Упражнение 4.25. Каково значение выражения ~'q' << 6на машине с 32-битовыми целыми числами и 8-битовыми символами, с учетом, что символ 'q'имеет битовое представление 01110001?

Упражнение 4.26. Что будет, если в приведенном выше примере оценки учеников использовать для переменной quiz1тип unsigned int?

Упражнение 4.27. Каков результат каждого из этих выражений?

unsigned long ul1 = 3, ul2 = 7;

(a) ul1 & ul2 (b) ul1 | ul2

(c) ul1 && ul2 (d) ul1 || ul2

4.9. Оператор sizeof

Оператор sizeofвозвращает размер в байтах результата выражения или указанного по имени типа. Оператор имеет правосторонний порядок. Результат оператора sizeof— это константное выражение (см. раздел 2.4.4) типа size_t(см. раздел 3.5.2). Оператор существует в двух формах.

sizeof( тип )

sizeof выражение

Во второй форме оператор sizeofвозвращает размер типа, возвращаемого выражением. Оператор sizeofнеобычен тем, что он не выполняет свой операнд.

Sales_data data, *p;

sizeof(Sales_data); // размер, необходимый для хранения объекта

// типа Sales_item

sizeof data; // размер типа данных, аналог sizeof(Sales_data)

sizeof p; // размер указателя

sizeof *p; // размер типа, на который указывает указатель p,

// т.е. sizeof(Sales_data)

sizeof data.revenue; // размер типа члена revenue класса Sales_data

sizeof Sales_data::revenue; // альтернативный способ получения

// размера revenue

Наиболее интересен пример sizeof *p. Во-первых, поскольку оператор sizeofимеет правосторонний порядок и тот же приоритет, что и оператор *, это выражение группируется справа налево. Таким образом, оно эквивалентно выражению sizeof(*p). Во-вторых, поскольку оператор sizeofне выполняет свой операнд, не имеет значения, допустим ли указатель p(т.е. инициализирован ли он) (см. раздел 2.3.2). Обращения к значению недопустимого указателя оператор sizeofне осуществляет, и указатель фактически не используется, поэтому он безопасен. Ему и не нужно обращаться к значению указателя, чтобы выяснить, какой тип он возвратит.

картинка 135По новому стандарту для доступа к члену класса при получении его размера можно использовать оператор области видимости. Обычно к членам класса можно обратиться только через объект этого класса. Больше не обязательно предоставлять объект, так как оператор sizeofне обязан выбирать член класса, чтобы узнать его размер.

Результат применения оператора sizeofчастично зависит от типа, к которому он применен.

• Если это тип charили выражения, результат которого имеет тип char, то это гарантированно будет 1.

• Если это ссылка, то возвращает размер типа объекта, на который она ссылается.

• Если это указатель, то возвращается размер, необходимый для хранения указателя.

• Если это обращение к значению указателя, то возвращается размер типа объекта, на который он указывает, вне зависимости от его допустимости.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стенли Липпман читать все книги автора по порядку

Стенли Липпман - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования C++. Пятое издание отзывы


Отзывы читателей о книге Язык программирования C++. Пятое издание, автор: Стенли Липпман. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x