Главная » Учебник C++ » Синтаксис C++ |
Предисловие
Синтаксис стандартного C++
Отличия в старых версиях
Предисловие
В этой статье описаны основные особенности синтаксиса языка C++ на примере самых простых программ, являющихся, тем не менее, хорошей иллюстрацией всего нижесказанного. Конечно, средства языка, реализующие те или иные понятия и методы программирования, имеют свои особенности синтаксиса, не указанные здесь, однако, описание этих особенностей без описания самих средств является малополезным, а потому оставлено до рассмотрения каждого конкретного средства в отдельности.
Первоначально синтаксис излагается таким, каким он принят в стандарте C++, а затем указываются отличия, имеющиеся в старых версиях языка, в частности, в среде разработки Borland C++ 3.1.
Синтаксис стандартного C++
Минимальная программа на C++ имеет следующий вид:
int main() {}
|
main
типа int
, которая не принимает никаких аргументов и не выполняет никаких действий. Функция main
должна быть в любой программе на C++, выполнение программы всегда начинается с нее. Целое значение, возвращаемое ей, предназначено для системы - возвращение ненулевого значения означает аварийное завершение.Более реалистичные программы работают с некими данными и осуществляют различные операции. Например:
//Пример.
|
Если комментарии должны быть многострочными, или необходимо закомментировать сразу большой участок кода, применяется пара символьных выражения /* и */. Все, что оказывается между ними, также игнорируется компилятором. (В случае однострочных комментариев начало комментариев обозначалось //, а конец находился в конце строки).
Запись
#include
означает, что мы включаем библиотеку, имя которой указано в угловых скобках, и можем использовать средства, находящиеся в ней. iostream
содержит средства ввода/вывода стандартной библиотеки, conio
- средства ввода/вывода MSDOS. Первое нам нужно для того, чтобы компилятор понял строкуstd::cout << c;
второе же - чтобы можно было использовать функцию
getch()
.Строка
int c;
означает, что мы объявляем переменную с именем c типа int (название типа стоит слева, за ним следует имя переменной). Точка с запятой обозначает логическую паузу в передаваемых компилятору инструкциях.
Если вам нужно объявить несколько переменных одного типа, вы можете написать их имена через запятую. Все переменные, имена которых в объявлении находятся между именем типа и точкой с запятой, будут относиться к этому типу. Именно так мы и сделали, написав
int a = 2, b = 3;
При этом мы также определили переменные a и b, задав им начальные значения - аргументу слева от оператора присваивания
=
присваивается значение, значение переменной или значение выражения, находящегося справа.Оператор
=
(присваивание) не стоит путать с оператором ==
(проверка на равенство)! Первый из них присваивает своему левому аргументу значение правого, второй же проверяет, равны ли его левые и правые аргументы. В Pascal'е оператор присваивания (=
в C++) выглядит как :=
, а оператор сравнения (==
в C++) - как =
. Не путайте два похожих оператора в одном языке программирования и операторы в разных! Это может стать частым источником ошибок! Например, тело условной инструкции if
в строкеif (a = b) {}
будет выполняться, если удалось присвоить переменной a значение переменной b.
Фигурные скобки означают группировку. Например, в фигурные скобки заключается тело функции -
main
или любой другой.
Выражение std::cout
означает использование стандартного потока вывода cout
, находящемся в пространстве имен std
. Оператор <<
("записать в") записывает свой второй аргумент - то, что справа от него, в первый - то, что слева. То есть мы направляем значение переменной c в стандартный поток вывода из пространства имен std
, что выглядит как вывод этого значения на экран.getch();
означает вызов функции getch()
- она определена в библиотеке conio
. Имена функций всегда сопровождаются круглыми скобками. Если функция вызывается с какими-то аргументами, то эти аргументы записываются в скобках. Если же функции не передается никаких аргументов, то круглые скобки остаются пустыми, указывая, что нечто с данным именем является функцией, а не переменной. В данном случае функция getch()
не принимает никаких аргументов. При нажатии клавиши на клавиатуре она считывает символ, соответствующий клавише - таким образом мы приостанавливаем завершение программы до нажатия какой-нибудь клавиши.
Отличия в старых версиях
В старых версиях C++, таких как Borland C++ 3.1, имеется достаточно большое количество устаревших особенностей, в том числе в синтаксисе. Рассмотрим, что отличаются программы-примеры в этой среде разработки.
Во-первых, в отличие от современных версий, если функция main()
имеет тип int, то она должна обязательно явно возвращать целое значение, т.е. в таком случае в конце функции обязательно должна быть строка
return 0;
В современных версиях отсутствие такой строки все равно означает успешное завершение программы. В старых версиях функция main
обычно имела тип void
.
При включении заголовочных файлов (#include
) в угловых скобках указывалось имя файла с обязательным расширением ".h". Например, iostream.h
вместо просто iostream
и stdio.h
вместо stdio
.
Поскольку в то время еще не было ни пространств имен (namespase), ни стандартной библиотеки, ни, тем более, пространства имен стандартной библиотеки std
, то стандартный поток вывода записывался без префикса std::
.