2016-09-21 17 views
-3

整数を返して整数の結果を返す関数がありますが、2を掛けると整数ではなくASCIIの値をとるため、正しい値が返されません値。関数の戻り値(charとinteger)

コードのこの部分は正しいです: 合計+ = *(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; 
} 

私はあなたがsum += *(ptrISBN + i) - ('0' * 2);をしていた変更がなければ2 を掛け、そのint型の値に(「9」に「0」)の文字を変換したいと仮定あなたが探していたものではありません。これは減算の前に乗算が行われたために起こりました。

+0

改善されましたが、それが最初に起こった理由(操作の順序)を追加してください。 –