Que de messages cette nuit
Koyo-k :
considérons les 2 formes :
int puiss()
{
int a;
int b;
. ..
}
et
int puiss(int a,int b)
{
. ..
}
Dans la 1e forme ( qui ne marchera pas), ta fonction puiss() ne prend aucun parametre : a et b sont déclarées en local, et par défaut, elles seront mises à 0 [...] donc la 1e forme te renverra TOUJOURS 0^0 ( qui fait 1 il me semble, mais bon...)
En effet, si tu choisis la 1e forme, il est normal que tu ne comprennes pas comment a et b peut prendre différentes valeurs sans que tu y touches : parce qu´en effet, ça ne peut pas prendre différentes valeurs.
de l´extérieur, tu appelles :
puiss();
Dans la 2ere forme : int a et int b sont passés en parametres :
c´est à dire que de l´extérieur, tu appelles :
puiss(2,3);
Aussitot le C reconnait que tu lui donnes 2 int
il attend puiss(int a,int b)
donc il défini tout de suite, dans l´ordre
a = 2;
b = 3;
et fait le le calcul...
si tu appelles puiss(4,5)
il assigne a = 4 et b = 5 et fait le calcul...
Métaphore :
tu es le chef, tu t´appelle " main", tu as un employé fort en calcul qui s´appelle " puiss"
La 1ere forme tu lui dis :
" Calcul moi la puissance."
--> il y comprendra rien le pauvre...
La 2eme forme, tu lui dis :
" Calcul moi la puissance avec les nombres 2 et 3"
--> ce sera mieux 