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

Зависимость от реализации. Программа может зависеть (и обычно зависит) от свойств (таких как размер типа int или числовое значение символа 'a'), которые точно определены только для заданного компилятора, операционной системы, машинной архитектуры и т.д. Свойства языка, зависящие от реализации, перечислены в стандарте и должны быть указаны в сопроводительной документации компилятора, а также в стандартных заголовках, таких как (см. раздел Б.1.1). Таким образом, соответствие стандарту не эквивалентно переносимости программы на разные реализации языка C++ .

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

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

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

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

<p id="AutBody_Root570"><strong>A.1.2. Старт и завершение программы</strong></p>

В программе на языке С++ должна быть отдельная глобальная функция с именем 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(). При малейшей возможности постарайтесь избегать глобальных объектов, особенно если они требуют нетривиального создания и уничтожения.

<p id="AutBody_Root571"><strong>A.1.3. Комментарии</strong></p>

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

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

/*

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

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

*/

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

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

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

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

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

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

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

<p id="AutBody_Root572"><strong>A.2. Литералы</strong></p>

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

<p id="AutBody_Root573"><strong>A.2.1. Целочисленные литералы</strong></p>

Целочисленные литералы (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.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных