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:
codice:
210 310 430
invece quelli che ottengo eseguendo il programma sono i seguenti:
codice:
-46 54 -82
Non riesco proprio a capire come il risultato possa essere negativo...help !