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

Интервал:

Закладка:

Сделать
Оператор логического NOT

Оператор логического NOT ( !) возвращает инверсию исходного значения своего операнда. Этот оператор уже использовался в разделе 3.2.2. В следующем примере подразумевается, что vec— это вектор целых чисел, для проверки наличия значений в элементах которого используется оператор логического NOT для значения, возвращенного функцией empty().

// отобразить первый элемент вектора vec, если он есть

if (!vec.empty())

cout << vec[0];

Подвыражение !vec.empty()возвращает значение true, если вызов функции empty()возвращает значение false.

Операторы отношения

Операторы отношения ( <, <=, >, <=) имеют свой обычный смысл и возвращают значение типа bool. Эти операторы имеют левосторонний порядок.

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

// Упс! это условие сравнивает k с результатом сравнения i < j

if (i < j < k) // true, если k больше 1!

Условие группирует iи jв первый оператор <. Результат этого выражения (типа bool) является левым операндом второго оператора <. Таким образом, переменная kсравнивается с результатом ( trueили false) первого оператора сравнения! Для реализации той проверки, которая и предполагалась, выражение нужно переписать следующим образом:

// условие истинно, если i меньше, чем j, и j меньше, чем k

if (i < j && j < k) { /* ... */ }

Проверка равенства и логические литералы

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

if (val) { /* ... */ } // true, если val - любое не нулевое значение

if (!val) { /* ... */ } // true, если val - нуль

В обоих условиях компилятор преобразовывает valв тип bool. Первое условие истинно, пока значение переменной valотлично от нуля; второе истинно, если val— нуль.

Казалось бы, условие можно переписать так:

if (val == true) { /* ... */ } // true, только если val равно 1!

У этого подхода две проблемы. Прежде всего, он длинней и менее непосредствен, чем предыдущий код (хотя по общему признанию в начале изучения языка С++ этот код понятней). Но важней всего то, что если тип переменной valотличен от bool, то это сравнение работает не так, как ожидалось.

Если переменная valимеет тип, отличный от bool, то перед применением оператора ==значение trueпреобразуется в тип переменной val. Таким образом, получается код, аналогичный следующему:

if (val == 1) { /*...*/ }

Как уже упоминалось, при преобразовании значения типа boolв другой арифметический тип falseпреобразуется в 0, a true— в 1(см. раздел 2.1.2). Если бы нужно было действительно сравнить значение переменной valсо значением 1, то условие так и следовало бы написать.

Язык программирования C Пятое издание - изображение 127Использование логических литералов trueи falseв качестве операндов сравнения — обычно плохая идея. Эти литералы следует использовать только для сравнения с объектами типа bool.

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

Упражнение 4.8. Объясните, когда обрабатываются операнды операторов логического AND, логического OR и оператора равенства.

Упражнение 4.9. Объясните поведение следующего условия оператора if:

const char *cp = "Hello World";

if (cp && *cp)

Упражнение 4.10. Напишите условие цикла while, который читал бы целые числа со стандартного устройства ввода, пока во вводе не встретится значение 42.

Упражнение 4.11. Напишите выражение, проверяющее четыре значения а, b, си dи являющееся истинным, если значение абольше b, которое больше c, которое больше d.

Упражнение 4.12. С учетом того, что i, jи kимеют тип int, объясните значение выражения i != j < k.

4.4. Операторы присвоения

Левым операндом оператора присвоения должно быть допускающее изменение l-значение. Ниже приведено несколько примеров недопустимых попыток присвоения.

int i = 0, j = 0, k = 0; // инициализация, а не присвоение

const int ci = i; // инициализация, а не присвоение

1024 = k; // ошибка: литерал является r-значением

i + j = k; // ошибка: арифметическое выражение - тоже r-значение

ci = k; // ошибка: ci - константа (неизменяемое l-значение)

Результат присвоения, левый операнд, является l-значением. Тип результата совпадает с типом левого операнда. Если типы левого и правого операндов отличаются, тип правого операнда преобразуется в тип левого.

k = 0; // результат: тип int, значение 0

k = 3.14159; // результат: тип int, значение 3

картинка 128По новому стандарту с правой стороны можно использовать список инициализации (см. раздел 2.2.1):

k = {3.14}; // ошибка: сужающее преобразование

vector vi; // первоначально пусто

vi = {0,1,2,3,4,5,6,7,8,9}; // теперь vi содержит десять элементов

// со значениями от 0 до 9

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

Для типов классов происходящее зависит от подробностей класса. В случае вектора шаблон vectorопределяет собственную версию оператора присвоения, позволяющего использовать список инициализации. Этот оператор заменяет элементы вектора с левой стороны элементами списка с правой.

Независимо от типа левого операнда список инициализации может быть пуст. В данном случае компилятор создает инициализированный значением по умолчанию (см. раздел 3.3.1) временный объект и присваивает это значение левому операнду.

Оператор присвоения имеет правосторонний порядок

В отличие от других парных операторов, присвоение имеет правосторонний порядок:

int ival, jval;

ival = jval = 0; // ok: каждой переменной присвоено значение 0

Поскольку присвоение имеет правосторонний порядок, его крайняя правая часть, jval = 0, является правым операндом крайнего левого оператора присвоения. Поскольку присвоение возвращает свой левый операнд, результат крайнего правого присвоения (т.е. jval) присваивается переменной ival.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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