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可能更容易吗?
C或C++都不保证将使用什么值来对字符进行编码0,但两者都保证数字是连续的和有序的,因此(例如)digits[0]-48可能会或可能不会起作用,但digits[0] - '0'保证可以正常工作(假设digits[0]实际上保持一个数字,当然).
C++标准(§2.3/ 3)中的精确要求是:
在源和执行基本字符集中,上述十进制数字列表中0之后的每个字符的值应比前一个值大1.
至少从C99开始,C标准具有相同的措辞,但是§5.2.1/ 3.