字符串转化为数字-’0‘法小问题

请问为什么把第六行-‘0’去掉 返回值就会从1234变成54562呢 求解答

#include
int f(char *cs)
{
    int nk=0;
    while (*cs)
          nk=nk*10+*cs++-'0';
    return (nk);
}
int main()
{

    printf("%d",f("1234"));
    return 0;
}


如果没有 减 ‘0’ 的话,字符 和 整数 进行加减,直接用其字符对应的 ascii进行计算
举个例子,比如

1 + '1' - '0' = 1 + 1 = 2
1 + '1'  = 1 + 49 = 50

因为参数是字符串,里面是数字字符,不是数字,而数字字符转换为数字的方式就是数字字符减去字符'0'
比如数字字符'2',减去数字字符'0',就是数字2了啊