函数返回值(char和整数)

时间:2016-09-21 10:42:01

标签: c++

我有一个应该计算求和并返回整数结果的函数,但是它没有返回正确的值,因为当我乘以2时它从ASCII表中获取值,而不是整数值。

这部分代码是正确的: sum + = *(ptrISBN + i) - '0' ,但是当我试图将它乘以2它给我ANSCII输出时,有人可以帮助我以某种方式将其转换为整数值吗?

 int checkSum(char *ptrISBN)
{
    int sum = 0;
    for (int i = 0; i < 14; i++) {
        if (isdigit(*(ptrISBN + i)))
        sum += *(ptrISBN + i) - '0' * 2;
    }   


    return sum;
}

1 个答案:

答案 0 :(得分:0)

尝试:

 int checkSum(char *ptrISBN)
{
    int sum = 0;
    for (int i = 0; i < 14; i++) {
        if (isdigit(*(ptrISBN + i)))
        sum += (*(ptrISBN + i) - '0') * 2; //little change here
    }   


    return sum;
}

我假设您想将字符('0'转换为'9')转换为其int值,然后将其乘以2。 没有改变你正在做sum += *(ptrISBN + i) - ('0' * 2);这不是你想要的。这是因为乘法是在减法之前完成的。