Char не конвертируется в int

По какой-то причине моя C-программа отказывается преобразовывать элементы argv в целые, и я не могу понять, почему.

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);
}

И это вывод при запуске ./test 50:

50

-1076276207

Я попытался удалить (int), бросив и *, и & между (int) и argv [1] - первый дал мне 5, но не 50, но последний дал мне вывод, похожий на приведенный выше. Удаление операции «0» не очень помогает. Я также попытался сделать char first = argv [1] и использовать вместо этого first для преобразования, и это довольно странно дало мне 17 независимо от ввода.

Я в замешательстве. Что происходит?

Ответы на вопрос(4)

Ваш ответ на вопрос