Char não está convertendo para int

or algum motivo, meu programa C se recusa a converter elementos do argv em ints, e não consigo descobrir o porqu

int main(int argc, char *argv[])
{

    fprintf(stdout, "%s\n", argv[1]);

    //Make conversions to int
    int bufferquesize = (int)argv[1] - '0';

    fprintf(stdout, "%d\n", bufferquesize);
}

E esta é a saída ao executar ./test 50:

50

-1076276207

Eu tentei remover o (int), lançando a * e um & between (int) e argv [1] - o primeiro me deu um 5, mas não 50, mas o último me deu uma saída semelhante à acima. Remover a operação - '0' não ajuda muito. Eu também tentei fazer um char primeiro = argv [1] e usar primeiro para a conversão, e isso estranhamente me deu 17, independentemente da entrad

Estou extremamente confuso. O que está acontecendo

questionAnswers(8)

yourAnswerToTheQuestion