在C中将char转换为int

Rog*_*hat 0 c c++ type-conversion char

在发布这个问题之前,我已经搜索了很长时间了.答案应该相当容易,因为我是一个超初学者的atm.

我有一个char*我希望用户放置一些数字(超过20),反过来可以专门调用.

这就是我尝试过的:

    char* digits = GetString();
    int prime = digits[0];
Run Code Online (Sandbox Code Playgroud)

当我验证这是否适用于printf时,我发现素数已经变为0.

    printf("prime:%d\ndigits:%c\n",prime, digits[0]);
Run Code Online (Sandbox Code Playgroud)

为什么会这样,我该怎么做才能使这个工作?

编辑:制作一个int数组并使用GetLongLong可能更容易吗?

Jer*_*fin 5

C或C++都不保证将使用什么值来对字符进行编码0,但两者都保证数字是连续的和有序的,因此(例如)digits[0]-48可能会或可能不会起作用,但digits[0] - '0'保证可以正常工作(假设digits[0]实际上保持一个数字,当然).

C++标准(§2.3/ 3)中的精确要求是:

在源和执行基本字符集中,上述十进制数字列表中0之后的每个字符的值应比前一个值大1.

至少从C99开始,C标准具有相同的措辞,但是§5.2.1/ 3.