Стенли Липпман - Язык программирования C++. Пятое издание
- Название:Язык программирования C++. Пятое издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2014
- Город:Москва
- ISBN:978-5-8459-1839-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стенли Липпман - Язык программирования C++. Пятое издание краткое содержание
Вы держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под
. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. В соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.
С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать их наилучшие способы применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.
Стенли Б. Липпман Жози Лажойе Барбара Э. Му • Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием
• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования
• Изучите принципы и узнайте почему язык С++11 работает именно так
• Воспользуйтесь множеством перекрестных ссылок, способных помочь вам объединить взаимосвязанные концепции и проникнуть в суть
• Ознакомьтесь с современными методиками обучения и извлеките пользу из упражнений, в которых подчеркиваются ключевые моменты, позволяющие избежать проблем
• Освойте лучшие методики программирования и закрепите на практике изученный материал
Исходный код примеров можно загрузить с веб-страницы книги на сайте издательства по адресу: http://www.williamspublishing.com
Язык программирования C++. Пятое издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Символ, заключенный в одинарные кавычки, является литералом типа char
. Несколько символов, заключенных в парные кавычки, являются строковым литералом:
'a' // символьный литерал
"Hello World!" // строковый литерал
Типом строкового литерала является массив константных символов. Этот тип обсуждается в разделе 3.5.4. К каждому строковому литералу компилятор добавляет нулевой символ (null character) ( '\0'
). Таким образом, реальная величина строкового литерала на единицу больше его видимого размера. Например, литерал 'A'
представляет один символ А, тогда как строковый литерал "А"
представляет массив из двух символов, символа А и нулевого символа.
Два строковых литерала, разделенных пробелами, табуляцией или символом новой строки, конкатенируются в единый литерал. Такую форму литерала используют, если необходимо написать слишком длинный текст, который неудобно располагать в одной строке.
// многострочный литерал
std::cout << "a really, really long string literal "
"that spans two lines" << std::endl;
У некоторых символов, таких как возврат на один символ или управляющий символ, нет видимого изображения. Такие символы называют непечатаемыми (nonprintable character). Другие символы (одиночные и парные кавычки, вопросительный знак и наклонная черта влево) имеют в языке специальное назначение. В программах нельзя использовать ни один из этих символов непосредственно. Для их представления как символов используется управляющая последовательность (escape sequence), начинающаяся с символа наклонной черты влево.
В языке С++ определены следующие управляющие последовательности.
Новая строка (newline) | \n |
Горизонтальная табуляция (horizontal tab) | \t |
Оповещение, звонок (alert) | \a |
Вертикальная табуляция (vertical tab) | \v |
Возврат на один символ (backspace) | \b |
Двойная кавычка (double quote) | \" |
Наклонная черта влево (backslash) | \\ |
Вопросительный знак (question mark) | \? |
Одинарная кавычка (single quote) | \' |
Возврат каретки (carriage return) | \r |
Прогон страницы (formfeed) | \f |
Управляющую последовательность используют как единый символ:
std::cout << '\n'; // отобразить новую строку
std::cout << "\tHi!\n"; // отобразить табуляцию,
// текст "Hi!" и новую строка
Можно также написать обобщенную управляющую последовательность, где за \x
следует одна или несколько шестнадцатеричных цифр или за \
следует одна, две или три восьмеричные цифры. Так можно отобразить символ по его числовому значению. Вот несколько примеров (подразумевается использование набора символов Latin-1):
\7
(оповещение) \12
(новая строка) \40
(пробел)
\0
(нулевой символ) \115
(символ 'M'
) \x4d
(символ 'M'
)
Как и управляющие последовательности, определенные языком, такой синтаксис можно использовать вместо любого другого символа:
std::cout << "Hi \x4dO\115!\n"; // выводит Hi MOM! и новую строку
std::cout << '\115' << '\n'; // выводит M и новую строку
Обратите внимание: если символ \
сопровождается более чем тремя восьмеричными цифрами, то ассоциируются с ним только первые три. Например, литерал "\1234"
представляет два символа: символ, представленный восьмеричным значением 123, и символ 4. Форма \x
, напротив, использует все последующие шестнадцатеричные цифры; литерал "\x1234"
представляет один 16-разрядный символ, состоящий из битов, соответствующих этим четырем шестнадцатеричным цифрам. Поскольку большинство машин использует 8-битовые символы, подобные значения вряд ли будут полезны. Обычно шестнадцатеричные символы с более чем 8 битами используются для расширенных наборов символов с применением одного из префиксов, приведенных в табл. 2.2.
При помощи суффикса или префикса, представленного в табл. 2.2, можно переопределить заданный по умолчанию тип целого числа, числа с плавающей запятой или символьного литерала.
L'a' // литерал типа wchar_t (широкий символ)
u8"hi!" // строковый литерал utf-8 (8-битовая кодировка Unicode)
42ULL // целочисленный беззнаковый литерал, тип unsigned long long
1E-3F // литерал с плавающей точкой и одинарной точностью, тип float
3.14159L // литерал с плавающей точкой и расширенной точностью,
// тип long double
При обозначении литерала как имеющего тип
long
используйте букву L
в верхнем регистре; строчная буква l
слишком похожа на цифру 1.
Таблица 2.2. Определение типа литерала
Символьные и строковые литералы | |||
---|---|---|---|
Префикс | Значение | Тип | |
U |
Символ Unicode 16 | char16_t |
|
U |
Символ Unicode 32 | char32_t |
|
L |
Широкий символ | wchar_t |
|
U8 |
utf-8 (только строковые литералы) | char |
|
Целочисленные литералы | Литералы с плавающей точкой | ||
Суффикс | Минимальный тип | Суффикс | Тип |
u или U |
unsigned |
f или F |
float |
l или L |
long |
l или L |
long double |
Ll или LL |
long long |
Можно непосредственно определить знак и размер целочисленного литерала. Если суффикс содержит символ U
, то у литерала беззнаковый тип. Таким образом, у десятичного, восьмеричного или шестнадцатеричного литерала с суффиксом U
будет наименьший тип unsigned int
, unsigned long
или unsigned long long
, в соответствии со значением литерала. Если суффикс будет содержать символ L
, то типом литерала будет по крайней мере long
; если суффикс будет содержать символы LL
, то типом литерала будет long long
или unsigned long long
.
Можно объединить символ U
с символом L
или символами LL
. Литерал с суффиксом UL
, например, задаст тип unsigned long
или unsigned long long
, в зависимости от того, помещается ли его значение в тип unsigned long
.
Слова true
и false
— это логические литералы (литералы типа bool
)
bool test = false
;
Слово nullptr
является литеральным указателем. Более подробная информация об указателях и литерале nullptr
приведена в разделе 2.3.2.
Упражнение 2.5. Определите тип каждого из следующих литералов. Объясните различия между ними:
Читать дальшеИнтервал:
Закладка: