#include
int main() {
int sum = 0, value = 0;
//
while (std::cin >> value)
sum += value; //
std::cout << "Sum is: " << sum << std::endl;
return 0;
}
Если ввести значения 3 4 5 6
, то будет получен результат Sum is: 18
.
Первая строка функции main()
определяет две переменные типа int
по имени sum
и value
, инициализируемые значением 0
. Переменная value
применяется для хранения чисел, вводимых в условии цикла while
.
while (std::cin >> value)
Условием продолжения цикла while
является выражение
std::cin >> value
Это выражение читает следующее число со стандартного устройства ввода и сохраняет его в переменной value
. Как упоминалось в разделе 1.2, оператор ввода возвращает свой левый операнд. Таким образом, в условии фактически проверяется объект std::cin
.
Когда объект типа istream
используется при проверке условия, результат зависит от состояния потока. Если поток допустим, т.е. не столкнулся с ошибкой и ввод следующего значения еще возможен, это условие считается истинным. Объект типа istream
переходит в недопустимое состояние по достижении istream
в условии свидетельствует о том, что оно ложно.
Таким образом, пока не достигнут конец файла (или не произошла ошибка ввода), условие остается истинным и выполняется тело цикла while
. Тело состоит из одного составного оператора присвоения, который добавляет значение переменной value
к текущему значению переменной sum
. Однажды нарушение условия завершает цикл while
. По выходе из цикла выполняется следующий оператор, который выводит значение переменной sum
, сопровождаемое манипулятором endl
.