Вот код, написанный на CЖизнь переменная, определенная в функции, кроме основной
#include<stdio.h>
int foo()
{
static int a=0;
a=a+1;
return a;
}
int main()
{
foo();
foo();
printf("%d",foo());
}
Я составил этот код, используя gcc11 в Eclipse IDE и у меня есть 3, как мой вывод.
Вот что я думаю, что должно произойти, что приводит меня к выходу, как 1 не 3.
Вызов функции-1: Основная функция вызывает функцию Foo и управление переходит к функции Foo, то переменная 'a' в foo - , созданная с начальным значением нуля, то она увеличивается на , и это добавочное значение (1) возвращается к основной функции. На этом этапе переменные, созданные для функции foo, должны быть уничтожены.
Вызов функции-2: То же, что Вызов функции-1:
Вызов функции-3: То же, что Вызов функции-1:
В конце концов значение напечатанные функцией printf в главном, должны быть 1.
Почему выход программы составляет 3?
Это очень помогает. Спасибо! –