/ / Variáveis ​​estáticas não retendo seus valores dentro da função [closed] - c, variáveis ​​estáticas

Variáveis ​​Estáticas não retendo seus valores dentro da função [closed] - c, variáveis ​​estáticas

Funções internas As variáveis ​​estáticas retêm seu valor quando são chamadas novamente, mas por que isso não está acontecendo neste caso?

#include <stdio.h>

void print(void) {
static int x;
x = 10;
x += 5;
printf("%d ", x);
}

int main() {
print();
print();
return 0;
}

Está dando saída como 15 15.

Respostas:

8 para resposta № 1

Você atribui um novo valor a cada vez:

static int x;
x = 10;             // <- assignment

O que você provavelmente quer é inicialização:

static int x = 10;  // <- initialization

A inicialização acontece apenas uma vez durante a vida útil variável e static significa que a variável vive durante todo o tempo de execução do seu programa.


0 para resposta № 2

A inicialização da variável estática resolverá o problema. Abaixo exemplo corrigido resolve o problema e me dá 15 e 20

#include <stdio.h>

void print(void) {
static int x = 10; //Initialize here
// x = 10;  //remove this statement
x += 5;
printf("%d ", x);
}

int main() {
print();
print();
return 0;
}