문자형 숫자('1', '2')를 숫자로 바꾸려면?
프로그래밍2006. 1. 19. 13:42
ASCII 코드 '0'이 48인 것을 생각하면,
문자형 - '0'을 하면 간단하게 처리된다.
Ex) '2' -> '2'(50) - '0'(48) = 2
Ex) '10' -> '10'(58) - '0'(48) = 10
조금만 생각하면 유용하게 쓸 수 있다.
scanf로 문자를 받는데, 숫자가 들어갔다고 가정하자.
그러면 문자 숫자가 될 터인데, 이것을 숫자로 바꿀 때에는 다음과 같다.
while ( (ch = getchar()) != "\n" )
{
num = num * 10 + (ch - '0');
}
: 또하나의 포인트
-> num * 10은 숫자문자가 1개 이상일때 끝까지 읽으면서 이전에 읽었던 숫자들을 한자리씩 올려주는 역할을 한다. 즉, 다시 말하면 10진수로 바꾸기 위해 쓰였다는 것을 알 수 있다.
num * 8로 하면 8진수로, num * 16으로 하면 16진수로 바뀌어 진다.
문자형 - '0'을 하면 간단하게 처리된다.
Ex) '2' -> '2'(50) - '0'(48) = 2
Ex) '10' -> '10'(58) - '0'(48) = 10
조금만 생각하면 유용하게 쓸 수 있다.
scanf로 문자를 받는데, 숫자가 들어갔다고 가정하자.
그러면 문자 숫자가 될 터인데, 이것을 숫자로 바꿀 때에는 다음과 같다.
while ( (ch = getchar()) != "\n" )
{
num = num * 10 + (ch - '0');
}
: 또하나의 포인트
-> num * 10은 숫자문자가 1개 이상일때 끝까지 읽으면서 이전에 읽었던 숫자들을 한자리씩 올려주는 역할을 한다. 즉, 다시 말하면 10진수로 바꾸기 위해 쓰였다는 것을 알 수 있다.
num * 8로 하면 8진수로, num * 16으로 하면 16진수로 바뀌어 진다.
'프로그래밍' 카테고리의 다른 글
DP(Dynamic Programming) (0) | 2006.01.20 |
---|---|
fseek() 함수 (1) | 2006.01.19 |
strcmp() 함수 (0) | 2006.01.19 |
칼로리 계산(Back Tracking) (2) | 2006.01.18 |
ACM 10018 Reverse And Add (0) | 2006.01.16 |