bonjour à tous,

je suis entrain d'apprendre le C.
mais je ne comprend pas un truc.
voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
void function() {
	int var = 5;
	static int static_var = 5;
 
	printf("\t[in function] var = %d\n", var);
	printf("\t[in function] static_var = %d\n", static_var);
	var++;  //ajouter 1 à var
	static_var++;   //ajouter 1 à static_var
}
 
int main(){ //La fonction main, avec son propre contexte.
	int i;
	static int static_var = 1337; //
 
	for(i=0; i<5; i++){ //Boucle 5 fois
		printf("[in main] static_var = %d\n", static_var);
 		function(); //Appeler la fonction.
	}
}
une variable static ne se modifie pas dans le programme si j'ai bien compris. alors comment expliquez vous qu'à la compilation la variable static_var s'incrémente?

[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 5
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 6
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 7
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 8
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 9
je n'arrive pas à comprendre pourquoi la variable var (de la fonction) qui n'est pas statique, elle, ne s'incrémente pas et static_var ( de la fonction) qui est supposé être statique s'incrémente.

Merci de m'aider à comrendre cela.

cordialement,

MacMini