합계를 계산하고 정수 결과를 반환하는 함수가 있지만 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;
}
시험:
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);
당신이 찾고 있던 것이 아닌 것을 하고 있었습니다. 뺄셈을하기 전에 곱셈을했기 때문입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다