5.2. Операторная область видимости

Переменные можно определять в управляющих структурах операторов if, switch, while и for. Переменные, определенные в управляющей структуре, видимы только в пределах этого оператора и выходят из области видимости по его завершении.

while (int i = get_num()) // i создается и инициализируется при

                          // каждой итерации

 cout << i << endl;

i = 0; // ошибка: переменная i недоступна вне цикла

Если к значению управляющей переменной необходимо обращаться впоследствии, то ее следует определить вне оператора.

// найти первый отрицательный элемент

auto beg = v.begin();

while (beg != v.end() && *beg >= 0)

 ++beg;

if (beg == v.end())

 // известно, что все элементы v больше или равны нулю

Значение объекта, определенного в управляющей структуре, используется самой структурой. Поэтому такие переменные следует инициализировать.

Упражнения раздела 5.2

Упражнение 5.4. Объясните каждый из следующих примеров, а также устраните все обнаруженные проблемы.

(a) while (string::iterator iter != s.end()) { /* ... */ }

(b) while (bool status = find(word)) { /* ... */ }

    if (!status) { /* ... */ }

Более 800 000 книг и аудиокниг! 📚

Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением

ПОЛУЧИТЬ ПОДАРОК