|
|
||
5. Неявное указание блоков |
||
Если программист не указал скобки для блока стейтментов if или else, то компилятор неявно сделает это за него. Таким образом, следующее: if (выражение) Будет выполняться как: if (выражение) По сути, это не имеет значения. Однако начинающие программисты иногда пытаются сделать что-то вроде следующего: #include <iostream>
int main()
{
if (1)
int a = 4;
else
int a = 5;
std::cout << a;
return 0;
}
Программа не скомпилируется, и в итоге мы получим ошибку, что идентификатор a не определен. А произойдет это из-за того, что программа будет выполняться следующим образом: #include <iostream>
int main()
{
if (1)
{
int a = 4;
} // переменная a уничтожается здесь
else
{
int a = 5;
} // переменная a уничтожается здесь
std::cout << a; // переменная a здесь не определена
return 0;
}
В этом контексте становится понятным, что переменная a имеет локальную область видимости и уничтожается в конце блока, в котором выполняется её инициализация. И, когда мы дойдем до строчки с std::cout, переменная a уже перестанет существовать.
|
||
|
||
5 |