Рассмотрим следующую программу на C:
#include <stdio.h>
unsigned int my_value = 0;
void print_value(void)
{
printf("My value: %d\n", my_value);
}
int main(void)
{
int my_value = 5;
printf("My main value: %d\n", my_value);
print_value();
return 0;
}
Эта программа напечатает:
My main value: 5
My Value: 0
Причина в том, что переменная my_value
связана с переменной, определенной в *Функция 1008 * в контексте main
и функция, определенная как глобальная переменная в контексте функции print_value
.Большинство языков, таких как C, имеют контекст для своих определений переменных, допускающих то, что называется hiding
переменных: переменная, определенная внутри блока (область между знаками {
и }
), не переопределяет предыдущие определения переменнойname, а скорее «скрывает» их для контекста блока.
Существуют языки, которые не зависят от контекста, где имя существует с момента определения и до выхода из программы.Обновление переменной на этих языках приведет к обновлению ее значения для всей программы.