Программирование. Принципы и практика использования C++ Исправленное издание, стр. 403
A.1.1. Терминология
В стандарте языка C++ даны следующие определения программы на языке C++ и разных его конструкций.
• Соответствие стандарту. Программа, написанная на языке C++ в соответствии со стандартом, называется соответствующей стандарту (conforming), или легальной (legal), или корректной (valid).
• Зависимость от реализации. Программа может зависеть (и обычно зависит) от свойств (таких как размер типа
int'a'<limits>• Неопределенность. Смысл некоторых конструкций является неустановленным точно (unspecified), неопределенным (undefined) или не соответствующим стандарту, но не диагностируемым (not conforming but not requiring a diagnostic). Очевидно, что такие свойства лучше не использовать. В этой книге их нет. Перечислим неопределенные свойства, которых следует избегать.
• Несогласованные определения в разных исходных файлах (используйте заголовочные файлы согласованно; см. раздел 8.3).
• Повторное чтение и запись одной и той же переменной в выражении (основным примером является инструкция
a[i]=++i;• Многочисленные явные преобразования типов (приведения), особенно
reinterpret_castA.1.2. Старт и завершение программы
В программе на языке С++ должна быть отдельная глобальная функция с именем
main()main()intvoidmain()Аргументы функции
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 представляет целое число двенадцать, литерал "
MorningtrueA.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 относит их к типу
long10u123456ULA.2.1.1. Числовые системы
Обычно мы записываем числа в десятичной системе. Число
1231231*100+2*10+3*1^1*10^2+2*10^1+3*10^01*base^2+2*base^1+3*base^0base==10