Чтение онлайн

на главную

Жанры

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

Неопределенность. Смысл некоторых конструкций является неустановленным точно (unspecified), неопределенным (undefined) или не соответствующим стандарту, но не диагностируемым (not conforming but not requiring a diagnostic). Очевидно, что такие свойства лучше не использовать. В этой книге их нет. Перечислим неопределенные свойства, которых следует избегать.

• Несогласованные определения в разных исходных файлах (используйте заголовочные файлы согласованно; см. раздел 8.3).

• Повторное чтение и запись одной

и той же переменной в выражении (основным примером является инструкция
a[i]=++i;
).

• Многочисленные явные преобразования типов (приведения), особенно

reinterpret_cast
.

A.1.2. Старт и завершение программы

В программе на языке С++ должна быть отдельная глобальная функция с именем

main
. Программа начинается с выполнения именно этой функции. Значение, возвращаемое функцией
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).

Поделиться:
Популярные книги

Live-rpg. эволюция-3

Кронос Александр
3. Эволюция. Live-RPG
Фантастика:
боевая фантастика
6.59
рейтинг книги
Live-rpg. эволюция-3

Я – Орк

Лисицин Евгений
1. Я — Орк
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я – Орк

Беглец

Бубела Олег Николаевич
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Беглец

Корпулентные достоинства, или Знатный переполох. Дилогия

Цвик Катерина Александровна
Фантастика:
юмористическая фантастика
7.53
рейтинг книги
Корпулентные достоинства, или Знатный переполох. Дилогия

Князь Мещерский

Дроздов Анатолий Федорович
3. Зауряд-врач
Фантастика:
альтернативная история
8.35
рейтинг книги
Князь Мещерский

Генерал-адмирал. Тетралогия

Злотников Роман Валерьевич
Генерал-адмирал
Фантастика:
альтернативная история
8.71
рейтинг книги
Генерал-адмирал. Тетралогия

Идеальный мир для Лекаря 3

Сапфир Олег
3. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 3

Делегат

Астахов Евгений Евгеньевич
6. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Делегат

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

Возвышение Меркурия. Книга 17

Кронос Александр
17. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 17

Курсант: Назад в СССР 11

Дамиров Рафаэль
11. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: Назад в СССР 11

Я – Орк. Том 4

Лисицин Евгений
4. Я — Орк
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я – Орк. Том 4

Восход. Солнцев. Книга XI

Скабер Артемий
11. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга XI

Мимик нового Мира 4

Северный Лис
3. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 4