Pourquoi puis-je obtenir ce résultat inattendu avec atoi() en C?

Je ne comprends pas les résultats suivants du code C.

main()
{
    char s[] = "AAA";
    advanceString(s);
}

void advanceString(p[3])
{
    int val = atoi(p);
    printf("The atoi val is %d\n",val);
}

Ici la atoi valeur est affiché comme 0, mais je ne pouvais pas comprendre la raison exacte.
Selon ma compréhension, il doit être la somme de l'équivalent décimal de chacune des valeurs du tableau? S'il vous plaît corrigez-moi si je me trompe.

Veuillez coller du code qui compile.
N'a vraiment d'importance dans ce cas?
Peut-être, peut-être pas. Mais est-il vraiment si difficile, étant donné que l'OP a déjà vu le résultat de l'exécution du programme?
parce que ce n'est pas ce atoi() est censé faire.
strtol ne ferez pas ce que vous décrivez. Pas de norme en fonction de la bibliothèque de la volonté; ce n'est pas quelque chose que les gens l'habitude de faire.

OriginalL'auteur maddy | 2010-04-28