102Close104
Kevin KoflerOn the 2010-10-13 at 05:22pm
Pour l'histoire des variables globales, c'est écrit dans la FAQ: http://tigcc.ticalc.org/doc/faq.html#29.

Et ça va te paraître totalement tordu et à l'envers, mais si tu mets juste int done; à la place de int done=0;, la variable globale sera automatiquement remise à zéro à chaque exécution (en admettant les options par défaut, parce qu'il y a des flags qui influencent ce comportement). La raison technique, c'est qu'une variable globale ou statique non initialisée est alloué dans une section BSS et que par défaut cette section BSS est initialisée à zéro au démarrage du programme. (Attention, une variable locale non statique non initialisée n'est pas initialisée à zéro, mais a une valeur non déterminée. Pour une variable locale, il faut mettre le =0 pour avoir une initialisation à 0 à chaque appel de la fonction.)