我有以下代码。
while (*str != '\0')
{
digit = *str - '0';
result = result * radix + digit;
str++;
}
*str -'0'
在这里意味着什么。?
答案 0 :(得分:3)
它将ASCII字符'0'到'9'分别转换为整数值0到9。 (显然,如果您确定*str
实际上是'0'到'9'中的一个字符,那么这只是一个好主意。)
答案 1 :(得分:1)
* str可能指向“0” - “9”中的字符值,但是,如果要使用简单的算法,* str可能无法按预期工作。如果* str指向字符'4'并且我们做'4'+ 2,则结果实际上是54,因为'4'的ASCII值是52.因此,通过从* str减去'0',我们将ASCII值转换为数字。 '4' - '0'+ 2 = 6
答案 2 :(得分:1)
通过从当前字符中减去数字*str
的编码值,将字符值'0'
转换为整数。整数的值将在0到9的范围内。
这是有效的,因为C保证数字0到9总是使用相邻值进行编码(即'1'
的编码值保证正好'0' + 1
,依此类推。)
答案 3 :(得分:0)
从char中减去零的ascii值,因此在数字的情况下,将返回该位置的数值。