Salut!
Ce programme:
montre que après le retour du "setjmp", "m" vaut bien sa valeur initiale : 0 ce qui n'est pas le cas de "n" et ceci à cause de la différence d'affectation de la valeur 1 : avec l'opérateur "=" ou avec l'opérateur "+=".
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
21 #include <stdio.h> #include <stdlib.h> #include <setjmp.h> int main(int argc, char *argv[]) { int n=0,m=0; jmp_buf buf; if(!setjmp(buf)){ n+=1; m=1; printf("Avant \"longjmp\" : n = %d m = %d\n",n,m); longjmp(buf,1); } else{ printf("Apres \"longjmp\" : n = %d m = %d\n",n,m); } system("PAUSE"); return 0; }
Le résultat est le même avec l'opérateur "++" à la place de l'opérateur "+=".
Pourquoi "n" ne reprend t'il pas sa valeur initiale : 0 après le saut?
Merci.
Partager