Bonjour à tous ,
je suis en train d'apprendre le C et je me livre donc à quelques experiences sur de petits bouts de code afin de mieux cerner les mecanismes de ce langage.
Hier , apres une introduction aux fonctions , j'ai modifié le code d'exemple pour obtenir une sortie supplementaire et observer le traitement des parametres par la fonction.
Le resultat me montre que la fonction passe les parametres dans l'ordre inverse des appels , comment celà s'explique-t-il ?

Merci d'avance pour vos reponses.

Voiçi mon code , je compile via gcc sur Mac OS X , proc@Intel.


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
22
23
24
25
26
27
28
#include <stdio.h>
 
int puiss(int base, int n ); // prototype de la fonction -puiss- 
 
main()
{
	int i;
 
	for ( i = 0 ; i <10 ; ++i )
        // appels à la fonction -puiss-
		printf("2 à la puissance %d donne : %d  et -3 à la puissance %d donne : %d\n\n", i , puiss(2,i),i ,puiss(-3,i));
 
	return 0;
}
 
int puiss(int base, int n) // FONCTION    eleve base à la puissance n ; n >= 0 
                           // type-de-retour ( int ) nom-de-fontion (puiss ) et ( parametres eventuels )
{
	int i,p;
 
	p=1;
	for ( i=1 ; i <= n ; ++i)
	    p = p * base; // p
        // ajout d'une sortie pour visualiser le sens du traitement : sur ma machine , à l'inverse des appels ( -3 puis 2 )	
	    printf("in fonction: %d à la puissance %d\n",base , n);
 
		return p ; // retour du resultat de la fonction vers l'appel
}