// ввод и сравнение имен
int main()
{
cout << "Пожалуйста, введите два имени\n";
string first;
string second;
cin >> first >> second; // считываем две строки
if (first == second) cout << " имена совпадают \n";
if (first < second)
cout << first << " по алфавиту предшествует " << second <<'\n';
if (first > second)
cout << first << " по алфавиту следует за " << second <<'\n';
}
Здесь для выбора действия в зависимости от условия использована инструкция if
, смысл которой будет подробно изложен в разделе 4.4.1.1.
3.5. Присваивание и инициализация
=
. Этот оператор присваивает переменной новое значение. Рассмотрим пример.
int a = 3; // начальное значение переменной a равно 3
a = 4; // переменная а принимает значение 4
//("становится четверкой")
int b = a; // начальное значение переменной b является копией
// значения переменной a (т.е. 4)
b = a+5; // переменная b принимает значение a+5 (т.е. 9)
a = a+7; // переменная a принимает значение a+7 (т.е. 11)
а
не равно а+7
. Этот знак означает присваивание, т.е. помещение в переменную нового значения. Рассмотрим подробнее, что происходит при выполнении инструкции a= a+7
.
1. Сначала получаем значение переменной a
; оно равно целому числу 4
.
2. Затем добавляем к четверке семерку, получаем целое число 11
.
3. В заключение записываем значение 11
в переменную a
.
Эту операцию можно продемонстрировать также на примере строк.
string a = "alpha"; // начальное значение переменной a равно "alpha"
a = "beta"; // переменная a принимает значение "beta"
// (становится равной "beta")
string b = a; // начальное значение переменной b является
// копией значения переменной a (т.е. "beta")
b = a+"gamma"; // переменная b принимает значение a+"gamma"
// (т.е. "betagamma")
a = a+"delta"; // переменная a принимает значение a+"delta"
// (т.е. "betadelta")
• Инициализация (присваивание переменной ее начального значения).
• Присваивание (запись в переменную нового значения).
Эти операции настолько похожи, что в языке С++ для них используется одно и то же обозначение.
int y = 8; // инициализация переменной y значением 8
x = 9; // присваивание числа 9 переменной x
string t = "howdy!"; // инициализация переменной t значением "howdy!"
s = "G'day"; // присваивание переменной s значения "G’day"
Однако с логической точки зрения присваивание и инициализация различаются. Например, инициализация всегда происходит одновременно с определением типа (например, int
или string
), а присваивание нет. В принципе инициализация всегда осуществляется с пустой переменной. С другой стороны, присваивание (в принципе) сначала должно стереть старое значение из переменной и лишь затем записать в нее новое значение. Переменную можно представить в виде небольшого ящика, а значение — в виде конкретной вещи (например, монеты), лежащей в этом ящике. Перед инициализацией ящик пуст, но после нее он всегда содержит монету, поэтому, для того чтобы положить в него новую монету, вы (т.е. оператор присваивания) сначала должны вынуть из него старую (“стереть старое значение”), причем ящик нельзя оставлять пустым. Разумеется, в памяти компьютера эти операции происходят не так буквально, как мы описали, но ничего вредного в такой аллегории нет.