2016-09-21 92 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

更好 - 但也請添加爲什麼它發生在第一位(操作順序)。 –