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

Область видимости в условиях в C++

Пусть для простоты у нас есть всегда выполняющееся условие:

if (true) { }

Давайте рассмотрим следующий код:

if (true) { int res = 1; } std::cout << res << "\n"; // ошибка

Как вы видите, в переменную res должно записаться значение 1. Однако, если запустить этот код, то программа не собирается.

Дело в том, что переменные, объявленные внутри фигурных скобок, видны только внутри этих скобок, и не видны снаружи. По-научному здесь идет речь об области видимости переменных.

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

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

В следующем примере в переменную res в зависимости от условия записывается либо значение 1, либо значение 2:

int num = 5; if (num >= 0) { int res = 1; } else { int res = 2; } std::cout << res << "\n"; // ошибка

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

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

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

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