Salut!

Ce programme:
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;
}
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 "+=".
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.