이 코드는 정수 연산자 %를 사용하는 방법을 활용 /하고 *에 :
- 숫자의 맨 오른쪽 소수 자리 수 :
1234/10 == 123
:
1234 % 10 == 4
- 숫자의 맨 오른쪽 소수 자리를 제거
- 숫자의 오른쪽에 숫자를 추가하여
123 * 10 + 4 == 1234
가 반복 n
오프 숫자 및 그 소요
123 0
12 3
1 32
0 321
단계 손으로 코드를 통해 그것을 이해한다 : reverse
에 그들을 밀어. n == "123"의 초기 값을 취하십시오.
Is n zero? No, so go into the loop.
rem = n%10 == 123 % 10 == 3
reverse = reverse * 10 + rem == 0 * 10 + 3 == 3
n = n/10 == 123/10 == 12
Is n zero? No, so loop around.
rem = n%10 == 12 % 10 = 2
reverse = reverse * 10 + rem == 3 * 10 + 2 == 32
n = n/10 == 12/10 = 1
Is n zero? No, so loop around..
rem = n%10 == 1 % 10 = 1
reverse = reverse * 10 + rem == 32 * 10 + 1 == 321
n = n/10 == 1/10 = 0
Is n zero? Yes, so leave the loop.
reverse == 321
또는 제로의 입력으로 다시 시작 :
Is n zero? Yes, so leave the loop.
reverse == 0
이 프로그램은 상당히 무의미하지만 같은 원칙 16 (16 진수)와이 같은 다른 기지에서 일하는 것을 깨닫고 가치 (바이너리) - 프로그래밍의 특정 종류를 끝내면 유용 할 것입니다.
http://stackoverflow.com/questions/20477728/understanding-number-reversing-using-loop?rq = 1 이 답변은 내가 찾을 수있는 가장 가까운 것이었지만 printfs를 사용하여 무슨 일이 일어나고 있는지 알았는데 왜 역방향으로 값을 가져올 지 모르겠습니다. – mungostrap
'reverse = reverse * 10 + rem;''reverse * 10 == 0 '부터 처음으로 reverse는'rem'으로 설정됩니다. 후속 실행에서,'reverse> 0', 그래서 라인은 예상대로 작동합니다. – ChicagoRedSox
왜 무언가를 0으로 곱하는 것이 합리적입니까?! –