2016-09-21 85 views
-3

我有一个函数,应该计算sum和返回整数结果,但它不返回正确的值,因为当我乘以2它从ASCII表中取值,而不是整数值。函数返回值(字符和整数)

的这部分代码是正确的: 总和+ = *(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

你在混合整数和字符串 –

+1

你能否详细说一下_ANSCII的输出是什么? –

+0

@bub然后我可以做什么? – nik

回答

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);这不是你正在寻找的东西。这是因为乘法是在减法之前完成的。

+0

更好 - 但也请添加为什么它发生在第一位(操作顺序)。 –