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 № 1Você 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;
}