Я пытаюсь узнать, как статические переменные работают в c, когда они определены в данной функции. Например, когда я пишу следующее:
#include <stdio.h>
void inc() {
static int c = 0;
c++;
printf("%d\n", c);
}
int main(void) {
inc();
inc();
inc();
return 0;
}
Ожидаемый результат, очевидно:
1
2
3
При первом вызове функции статическая переменная c определяется и получает значение 0, что имеет смысл. Это увеличенный и напечатанный. Однако при втором вызове inc()
почему целое число c поддерживается и не устанавливается в ноль, хотя код буквально говорит static int c = 0;
. Какой механизм в компиляторе не дает c установить нулевое значение, как при первом вызове?