Каждая программа на C++ состоит из одной или более функций. Среди них обязательно должна присутствовать главная функция main
, которую и вызывает операционная система при запуске программы. Простейший пример:
int main() {
return 0;
}
Значение, возвращаемое main
, используется ОС для определения успешности
завершения программы. Если не ноль, то в программе произошла ошибка.
#include <iostream> // Заголовочный файл
int main() {
std::cout << "Hello world!" << std::endl;
}
Чтобы каждый раз не писать префикс std::
, можно включить пространство
имён в глобальную область видимости:
using namespace std; // Всё содержимое пространства std
// становится видимым во всем файле.
using std::cout; // Либо только элемент cout становится
// видимым во всем файле.
int main() {
cout << "Hello world!";
}
С++ | Pascal |
---|---|
int | integer |
bool | boolean |
double, float | real |
char | char |
Замечание: в типе char
не поддерживается Unicode по умолчанию.
double d = 3.14; // старый стиль
double d {3.14}; // новый стиль
double d = {3.14}; // или так
В C++ при попытке присвоить целочисленной переменной значение с плавающей точкой, произойдёт отбрасывание дробной части. При инициализации в новом стиле будет ошибка компиляции.
int i = 3.14; // i == 3
int i {3.14}; // Ошибка компиляции
Тип char
занимает 1 байт, поэтому диапазон его значений [-128,127],
однако следующий код будет откомпилирован.
char c = 128; // c == -128
C++ | Pascal | Примеры |
---|---|---|
= | := | int a = 4; |
/ | div | 7 / 3 — тип int ; 7 / 3.0 — double |
% | mod | |
a++ / ++a | a = a + 1 | ... |
&& | and | i > 0 && i != 2 |
\ | \ | |
! | not | |
== | = | |
!= | <> | |
<< | shl | (8 << 1 = 16) |
>> | shr | |
& | and | 7 & 3 == 3 |
\ | or | |
^ | xor | |
~ | not |
Возможна запись a = b = c
, означающая b = c; a = c
— множественное присваивание (справа налево).
Особое внимание стоит обратить на операцию сравнение на равенство:
if (a = 5) … // (1) Неверно! Но легко пропустить
if (5 = a) … // (2) Неверно! И компилятор выдаст ошибку
if (a == 5) … // (3) Верно! Но если спутать с (1), то легко не заметить
if (5 == a) … // (4) Верно! И если спутать с (2), то легко увидеть: ошибка компиляции
if (условие) {
...
} else {
...
}
Допускается сокращённая форма (без else
).
bool flag;
if (flag) {
cout << "true";
} else {
cout << "false";
}
Более короткая запись:
cout << (flag ? "true" : "false");
switch (i) {
case 1:
...
break;
case 2:
case 3:
...
default:
}
while
while (x > 10) {
x -= 1;
}
do-while
do {
x--;
} while (x > 0);
Похож на repeat/until
в Паскале, но используется условие продолжения
цикла (как в while
), а не условие окончания как в repeat/until
.
for
for (инициализация; условие_продолжения; действие_на_каждом_шаге) {
...
}
for (int i = 0; i < 10; i++) {
cout << i << " ";
} // "0 1 2 3 4 5 6 7 8 9 "
for (;;); // бесконечный цикл
,
(запятая)Возвращает значение своего последнего операнда, например:
int s = 0, i = 6;
cout << s = i*i, i; // Выведет 6