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

Одинаковые имена переменных в C++

Пусть и снаружи функции, и внутри есть переменная num. В этом случае любые изменения с локальной переменной num никак не влияют на глобальную переменную num:

#include <iostream> int num = 1; // глобальная переменная void func() { int num = 2; // локальная переменная std::cout << num << "\n"; } int main() { func(); // вызываем функцию, выведет 2 std::cout << num << "\n"; // выведет 1 - глобальная переменная не поменялась return 0; }

Но, если мы забудем объявить локальную переменную num, то внутри функции не создастся локальная переменная num, а просто изменится глобальная переменная:

#include <iostream> int num = 1; void func() { num = 2; // забыли объявить - меняем внешнюю переменную std::cout << num << "\n"; } int main() { func(); // вызываем функцию, выведет 2 std::cout << num << "\n"; // выведет 2 - переменная поменялась return 0; }

Тут может быть две ситуации: или мы действительно хотели поменять глобальную переменную (тогда все ок), или мы забыли объявление и случайно поменяли глобальную переменную.

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

Определите, не запуская код, что выведется в консоль:

int num = 1; void func() { num = 2; } int main() { func(); std::cout << num << "\n"; return 0; }

Определите, не запуская код, что выведется в консоль:

int num = 1; void func() { int num = 2; } int main() { func(); std::cout << num << "\n"; return 0; }
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить