Читать книги » Книги » Компьютеры и Интернет » Программирование » Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп

Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп

Читать книгу Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп, Бьёрн Страуструп . Жанр: Программирование.
Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп
Название: Программирование. Принципы и практика использования C++ Исправленное издание
Дата добавления: 26 август 2023
Количество просмотров: 475
(18+) Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту для удаления материала.
Читать онлайн

Программирование. Принципы и практика использования C++ Исправленное издание читать книгу онлайн

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

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка.
Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие.
Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток.
Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Перейти на страницу:
выполнения именно этой функции. Значение, возвращаемое функцией main(), имеет тип int (альтернативный тип void не соответствует стандарту). Значение, возвращаемое функцией main(), передается системе. Некоторые системы игнорируют это значение, но признаком успешного завершения программы является нуль, а признаком ошибки — ненулевое значение или исключение, оставшееся не перехваченным (правда, такие исключения считаются признаком плохого стиля).

Аргументы функции main() могут зависеть от реализации, но любая реализация должна допускать два варианта (но только одну для конкретной программы).

int main();                       // без аргументов

int main(int argc, char* argv[]); // массив argv[] содержит

                                  // argc C-строк

В определении функции main() явно указывать тип возвращаемого значения не обязательно. В таком случае программа, дойдя до конца, вернет нуль. Вот как выглядит минимальная программа на языке C++:

int main() { }

Если вы определили глобальный (в пространстве имен) объект, имеющий конструктор и деструктор, то вполне логично, чтобы конструктор выполнялся до функции main(), а деструктор — после функции main(). Формально говоря, выполнение таких конструкторов является частью вызова функции main(), а выполнение деструкторов — частью возвращения из функции main(). При малейшей возможности постарайтесь избегать глобальных объектов, особенно если они требуют нетривиального создания и уничтожения.

A.1.3. Комментарии

Все, что можно сказать в программе, должно быть сказано. Однако в языке C++ есть два стиля комментариев, позволяющие программистам сказать то, что невозможно выразить с помощью кода.

// это однострочный комментарий

/*

  это многострочный

  блок комментариев

*/

Очевидно, что блоки комментариев чаще всего оформляются как многострочные комментарии, хотя некоторые люди предпочитают разделять их на несколько однострочных.

// Это многострочный

// комментарий,

// представленный в виде трех однострочных комментариев,

/* а это однострочный комментарий, представленный как блочный

   комментарий */

Комментарии играют важную роль для документирования предназначения кода; см. также раздел 7.6.4. 

A.2. Литералы

Литералы представляют значения разных типов. Например, литерал 12 представляет целое число двенадцать, литерал "Morning" — символьную строку Morning, а литерал true — булево значение true.

A.2.1. Целочисленные литералы

Целочисленные литералы (integer literals) имеют три разновидности.

• Десятичные: последовательности десятичных цифр.

 Десятичные цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9.

• Восьмеричные: последовательности восьмеричных цифр, начинающиеся с нуля.

 Восьмеричные цифры: 0, 1, 2, 3, 4, 5, 6 и 7.

• Шестнадцатеричные: последовательности шестнадцатеричных цифр, начинающихся с 0x или 0X.

 Шестнадцатеричные цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, A, B, C, D, E и F.

Суффикс u или U означает, что целочисленный литерал не имеет знака, т.е. имеет спецификатор unsigned (см. раздел 25.5.3), а суффикс l или L относит их к типу long, например 10u или 123456UL.

A.2.1.1. Числовые системы

Обычно мы записываем числа в десятичной системе. Число 123 означает 1 сотню плюс 2 десятки плюс 3 единицы, или 1*100+2*10+3*1, или (используя символ ^ для обозначения степени) 1*10^2+2*10^1+3*10^0. Иногда вместо слова десятичный говорят: “База счисления равна десяти” (base-10). В данном случае число 10 означает, что в выражении 1*base^2+2*base^1+3*base^0 выполняется условие base==10. Существует много теорий, объясняющих, почему мы используем десятичную систему счисления. Одна из них апеллирует к естественным языкам: у нас на руках десять пальцев, а каждый символ, такой как 0, 1 и 2, представляющий собой цифру в позиционной системе счисления, в английском языке называется digit. Слово Digit в латинском языке означает палец.

Впрочем, иногда используются и другие системы счисления. Как правило, положительные целые числа в памяти компьютера представляются в двоичной системе счисления, т.е. база счисления равна 2 (значения 0 и 1 относительно легко представить с помощью физических состояний). Люди, сталкивающиеся с необходимостью решать задачи на низком уровне аппаратного обеспечения, иногда используют восьмеричную систему счисления (база равна 8), а при адресации памяти чаще используется шестнадцатеричная система (база равна 16).

Рассмотрим шестнадцатеричную систему счисления. Мы должны назвать шестнадцать значений от 0 до 15. Обычно для этого используются следующие символы: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, где A имеет десятичное значение 10, B — десятичное значение 11 и так далее:

A==10, B==11, C==12, D==13, E==14, F==15

Теперь можем записать десятичное число 123 как 7B в шестнадцатеричной системе счисления. Для того чтобы убедиться в этом, обратите внимание на то, что в шестнадцатеричной системе счисления число 7B равно 7*16+11, что в десятичной системе счисления равно 123. И наоборот, шестнадцатеричное число 123 означает 1*16^2+2*16+3, т.е. 1*256+2*16+3, что в десятичной системе счисления равно 291. Если вы никогда не сталкивались с недесятичными представлениями целых чисел, то мы настоятельно рекомендуем вам поупражняться в преобразовании чисел из десятичной системы в шестнадцатеричную, и наоборот. Обратите внимание на то, что шестнадцатеричная цифра имеет очень простое соответствие со своим двоичным значением.

Это объясняет популярность шестнадцатеричной системы. В частности, значение байта просто выражается двумя шестнадцатеричными цифрами.

В языке C++ (к счастью) числа являются десятичными, если иное не указано явно. Для того чтобы сказать, что число является шестнадцатеричным, следует поставить префикс 0X (символ X происходит от слова hex), так что 123==0X7B и 0X123==291. Точно так же можно использовать символ x в нижнем регистре, поэтому 123==0x7B и 0x123==291. Аналогично мы можем использовать шестнадцатеричные цифры a, b, c, d, e и f в нижнем регистре. Например, 123==0x7b.

Восьмеричная система основана на базе счисления, равной восьми. В этом случае мы можем использовать только восемь восьмеричных цифр: 0, 1, 2, 3, 4, 5, 6, 7. В языке C++ числа в восьмеричной системе счисления начинаются с символа 0, так что число 0123 —

Перейти на страницу:
Комментарии (0)