cin >> name; // оператор >> считывает строку в переменную name
int c2 = count+2; // оператор + складывает целые числа
string s2 = name + " Jr. "; // оператор + добавляет символы
int c3 = count–2; // оператор – вычитает целые числа
string s3 = name – "Jr. "; // ошибка: оператор – для строк не определен
int age = –100;
Очевидно, что человек не может иметь отрицательный возраст (хотя почему бы и нет?), но никто не сказал компилятору об этом, поэтому он успешно создаст код для этого определения. Приведем таблицу полезных операторов для наиболее распространенных типов.
Пустые ячейки означают, что операция не может применяться к данному типу непосредственно (хотя существует множество косвенных способов их использования; см. раздел 3.9.1). Со временем мы объясним все эти операции. Дело в том, что существует множество полезных операций и их смысл у схожих типов почти одинаков.
Рассмотрим пример, в котором фигурируют числа с плавающей точкой.
// простая программа, демонстрирующая работу операторов
int main()
{
cout << "Пожалуйста, введите значение с плавающей точкой: ";
double n;
cin >> n;
cout << "n == " << n
<< "\nn+1 == " << n+1
<< "\n три раза по n == " << 3*n
<< "\n два раза по n == " << n+n
<< "\nn в квадрате == " << n*n
<< "\n половина n == " << n/2
<< "\n корень квадратный из n == " << sqrt(n)
<< endl; // синоним перехода на новую строку ("end of line")
}
Очевидно, что обычные арифметические операции имеют традиционные обозначения, а их смысл известен нам со школьной скамьи. Естественно также, что не все операции над числами с плавающей точкой реализованы в виде операторов, например квадратный корень можно извлечь лишь с помощью функции. Многие операции представлены именованными функциями. В данном случае для извлечения квадратного корня из числа n используется функция sqrt(n)
ПОПРОБУЙТЕ
Запустите эту небольшую программу. Затем измените ее так, чтобы считать значение типа int
double. Обратите внимание на то, что функция sqrt() для целых чисел не определена, поэтому присвойте число переменной типа double и лишь затем примените к ней функцию sqrt(). Кроме того, выполните несколько других операций. Обратите внимание на то, что операция для целых чисел представляет собой целочисленное деление, а операция — вычисление остатка, так что 5/2 равно 2 (а не 2.5 или 3), а 5%2 равно 1. Определения целочисленных операций *, / и % гарантируют, что для двух положительных переменных a и b типа int выполняется равенство a/b*b+a%b==a.Для типа string
// ввод имени и отчества
int main()
{
cout << "Пожалуйста, введите свое имя и отчество \n";
string first;
string second;
cin >> first >> second; // считываем две строки
string name = first + ' ' + second; // конкатенируем строки
cout << "Hello, " << name << '\n';
}
Для строк оператор +
s1 и s2 имеют тип string, то s1+s2 является строкой, в которой вслед за символами строки s1 следуют символы строки s2. Например, если строка s1 имеет значение "Hello", а строка s2 — значение "World", то s1+s2 содержит значение "HelloWorld". Особенно полезным является сравнение строк.