Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpPmScCn 295 of 390 menu
◀ ▶

Нюансы области видимости в условиях в C++

Область видимости переменных обладает некоторым нюансом. Давайте рассмотрим его на примере. Давайте объявим снаружи нашего условия переменную res с одним значением, а внутри условия поменяем это значение на другое:

#include <iostream> int main() { int res = 1; if (true) { res = 2; } std::cout << res << "\n"; // выведет 2 return 0; }

Как вы видите, переменная res поменялась внутри условия. Все, однако, поменяется, если внутри условия также объявить переменную res:

#include <iostream> int main() { int res = 1; if (true) { int res = 2; // объявим переменную заново } std::cout << res << "\n"; // выведет 1, а не 2 return 0; }

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

То есть внутри условия существует одна переменная res, а снаружи условия - другая. Убедиться в этом можно, выведя значение переменной в консоль внутри условия:

#include <iostream> int main() { int res = 1; if (true) { int res = 2; std::cout << res << "\n"; // выведет 2 } std::cout << res << "\n"; // выведет 1 return 0; }

Автор приведенного ниже кода хотел выполнить проверку возраста на достижение 18 лет. Код, однако, не записывает значение во внешнюю переменную adult. Исправьте ошибку автора кода. Вот проблемный код:

int age = 17; bool adult; if (age >= 18) { bool adult = true; } else { bool adult = false; } std::cout << adult << "\n";

Автор приведенного ниже кода хотел выполнить проверку возраста на достижение 18 лет. После проверки кода оказалось, что если возраст равен или больше 18 лет, то в переменную adult записывается истина, как и должно быть, однако, если возраст меньше 18, то внешняя переменная adult не получает значение. Исправьте ошибку автора кода.

Вот проблемный код:

int age = 17; bool adult; if (age >= 18) { adult = true; } else { bool adult = false; } std::cout << adult << "\n";

Автор приведенного ниже кода хотел выполнить проверку возраста. Код, однако, не записывает строку во внешнюю переменную res. Исправьте ошибку автора кода.

Вот проблемный код:

int age = 17; std::string res; if (age >= 18) { if (age <= 23) { std::string res = "от 18 до 23"; } else { std::string res = "больше 23"; } } else { std::string res = "меньше 18"; } std::cout << res << "\n";

Автор приведенного ниже кода хотел выполнить проверку возраста. Код, однако, при значении возраста большим 18 лет не выводит нужную строку. Исправьте ошибку автора кода.

Вот проблемный код:

int age = 19; std::string res; if (age >= 18) { std::string res; if (age <= 23) { res = "от 18 до 23"; } else { res = "больше 23"; } } else { res = "меньше 18"; } std::cout << res << "\n";
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить