Ciao a tutti, mi sto esercitando in vista di un esame e tra i vari esercici di analisi e comprensione del codice mi è capitato quest'ultimo:
codice:
#include <stdio.h>
char *g(char *c) {
int i,n=strlen(c);
char *k=(char *)malloc(sizeof(char)*(n+1));
for(i=0; i<n; i++){
k[i]=c[n-1-i];
printf("%c\n", k[i]);
}
k[n]='\0';
return k;
}
int f(char *c, int b) {
if(*c == '\0') return 0;
printf("%c %d\n", *c, b);
return *c= 10+b*f(c+1,b);
}
int main() {
int a[]={4,5,6};
char b[]="012";
int i;
for(i=0; i<3; i++) printf ("%i\n\n", f(g(b), a[i]));
getch();
}
Devo scriverne l'output. Il fatto è che provando ad eseguirlo ottengo risultati completamente diversi da quelli che ho ottenuto io simulandone l'esecuzione.
Infatti i risultati che ottengo io "manualmente" sono:
invece quelli che ottengo eseguendo il programma sono i seguenti:
Non riesco proprio a capire come il risultato possa essere negativo...help !