•
int или числовое значение символа 'a'), которые точно определены только для заданного компилятора, операционной системы, машинной архитектуры и т.д. Свойства языка, зависящие от реализации, перечислены в стандарте и должны быть указаны в сопроводительной документации компилятора, а также в стандартных заголовках, таких как (см. раздел Б.1.1). Таким образом, соответствие стандарту не эквивалентно переносимости программы на разные реализации языка C++ .•
• Несогласованные определения в разных исходных файлах (используйте заголовочные файлы согласованно; см. раздел 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()
int main() { }
Если вы определили глобальный (в пространстве имен) объект, имеющий конструктор и деструктор, то вполне логично, чтобы конструктор выполнялся до функции main()
main(). Формально говоря, выполнение таких конструкторов является частью вызова функции main(), а выполнение деструкторов — частью возвращения из функции main(). При малейшей возможности постарайтесь избегать глобальных объектов, особенно если они требуют нетривиального создания и уничтожения.A.1.3. Комментарии
Все, что можно сказать в программе, должно быть сказано. Однако в языке C++ есть два стиля комментариев, позволяющие программистам сказать то, что невозможно выразить с помощью кода.
// это однострочный комментарий
/*
это многострочный
блок комментариев
*/
Очевидно, что блоки комментариев чаще всего оформляются как многострочные комментарии, хотя некоторые люди предпочитают разделять их на несколько однострочных.
// Это многострочный
// комментарий,
// представленный в виде трех однострочных комментариев,
/* а это однострочный комментарий, представленный как блочный
комментарий */
Комментарии играют важную роль для документирования предназначения кода; см. также раздел 7.6.4.
A.2. Литералы
Литералы представляют значения разных типов. Например, литерал 12 представляет целое число двенадцать, литерал "Morning
true — булево значение A.2.1. Целочисленные литералы
• Десятичные: последовательности десятичных цифр.
Десятичные цифры: 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.