Salve ragazzi ho scritto un piccolo programmino per testare le mie capacità di debugger :
Codice PHP:
#include <stdio.h>
int f(int *);
int main()
{
int v = 5, w, z1, z2;
z1 = f(&v) && f(&v);
printf("%d \n", w = z1 + v);
z2 = (v++) + (v <= w);
printf("%d \n", z2);
system("PAUSE");
return 0;
}
int f(int *x)
{
printf("%d \n", (*x)--);
return *x - 1 >= 3;
}
Il mio risultato calcolato a mente è:
5
3
1
1
Invece secondo il maestro compilatore è:
5
4
3
3
Non riesco a capire il perchè.
Secondo me l'errore sta in questo comando
Codice PHP:
return *x - 1 >= 3;
che a mia intepretazione vuol dire (alla prima chiamata di questa funzione) "4 - 1 (cioè 3) è maggiore o uguale a 3? SI" allora torna 1 a z1, in questo momento 'v' vale 3 o 4 ?
Se vale 3 alla seconda chiamata viene passato 3 a 'f' altrimenti 4 è giusto?