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

Проблема необязательности фигурных скобок в условиях в C++

Несмотря на то, что C++ допускает показанные выше сокращения с фигурными скобками, я в общем-то не рекомендую так делать, так как это рассадник трудноуловимых ошибок.

Пусть к примеру есть следующий код:

int num = 3; if (num > 0) std::cout << num << "\n";

Пусть теперь мы решили в том случае, если условие выполняется, сделать еще и второй вывод:

int num = 3; if (num > 0) std::cout << num << "\n"; std::cout << "Y" << "\n";

Однако без фигурных скобок внутри условия находится только первый вывод, то есть первый вывод будет срабатывать при верном условии, а второй - всегда.

Фактически наш код эквивалентен такому:

int num = 3; if (num > 0) { std::cout << num << "\n"; } std::cout << "Y" << "\n"; // эта строка оказалась снаружи условия

А мы бы хотели такой код:

int num = 3; if (num > 0) { std::cout << num << "\n"; std::cout << "Y" << "\n"; // эта строка внутри условия }

Именно поэтому рекомендуется всегда выполнять расстановку фигурных скобок, дабы не попадать в такого рода ошибки.

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

int num = 5; if (num == 5) std::cout << num << "\n"; std::cout << "Y" << "\n";

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

int num = 0; if (num == 5) std::cout << num << "\n"; std::cout << "Y" << "\n";

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

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