Qu'est-ce qui sera imprimé ? 6 6 ou 6 7 ? Et pourquoi?
void foo()
{
static int x = 5;
x++;
printf("%d", x);
}
int main()
{
foo();
foo();
return 0;
}
Qu'est-ce qui sera imprimé ? 6 6 ou 6 7 ? Et pourquoi?
void foo()
{
static int x = 5;
x++;
printf("%d", x);
}
int main()
{
foo();
foo();
return 0;
}
Sortie : 6 7
Raison : la variable statique n'est initialisée qu'une seule fois (contrairement à la variable automatique) et une définition supplémentaire de la variable statique serait contournée pendant l'exécution. Et s'il n'est pas initialisé manuellement, il est initialisé par la valeur 0 automatiquement. Donc,
void foo() {
static int x = 5; // assigns value of 5 only once
x++;
printf("%d", x);
}
int main() {
foo(); // x = 6
foo(); // x = 7
return 0;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.