난 자연수의 숫자 합계를 계산하기 위해 C로 최소의 프로그램을 작성하려고합니다 (숫자의 합계는 다음과 같이 정의됩니다 : sumOfDigits (123) = 6, sumOfDigits (0) = 0, sumOfDigits (32013) = 9 등).선행 0으로 자릿수 합계를 계산할 때 C에서의 이상한 동작
지금까지 모든 코드는 다음 코드 단편으로 확인되었습니다. 예를 들어 5100의 경우 6을 올바르게 전달합니다. 하지만, 14가 05100으로 배달되는 이유는 무엇입니까 (0을 기억하십시오)?
여기 무슨 일 이니?
숫자의 이진 표현을 살펴 봤지만 나에게 어떤 정보도주지 않았습니다. (BTW : 다음 코드는 것 같아요, 어디서나 실행해야합니다.)
#include <stdio.h>
unsigned int sumOfDigits(unsigned int n) {
int retval = 0;
while (n > 0) {
retval += n % 10;
n/=10;
}
return retval;
}
int main() {
printf("OK: %u\n", sumOfDigits(5100u));
printf("WTF: %u", sumOfDigits(05100u));
return 0;
}
편집 : Zaibis 진술으로 .... 선도적 인 0은 8 진수를 의미한다. :-) 이렇게 : 5100_8 == 2624_10
user2717860, Zaibis, http://programmers.stackexchange.com/questions/98692/where-are- @ octals-useful –
내 코멘트를 삭제했기 때문에 @Alter Mann :이 표기법이 유용한 것에 대한 유용한 링크입니다. 감사합니다. – dhein