Page 73 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 73
이 작업을 x가 0이 될 때까지 반복합니다. 그림 2-13은 10진수 59가 16진수로 변환되는 모
습입니다. 변환이 끝났을 때 digits는 변환한 수 3B의 자릿수 2와 일치합니다.
59를 16진수로 변환 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 … 33 34 35 36
dchar 0 1 2 3 4 5 6 7 8 9 A B C D E F G … X Y Z \0
16 59
16 3 … B x % n을 인덱스로 하는 문자를 배열 dchar에서
0 … 3 꺼내 d[digits]에 저장합니다.
d B 3
0 1 ❷ 3 4 5 6 7 8 9 10 11 12 13 14 15 16 …
digits
[그림 2-13] 기수 변환
나머지를 구하는 순서대로 배열 d에 저장하므로 배열 d의 맨 앞쪽(d[0])이 가장 마지막 자리
가 됩니다. 즉, 변환한 후의 d 값은 역순으로 배치되어 있습니다.
문자 'B'를 d[0]에 저장한 후 digits는 1, x는 3이 되고, 문자 '3'을 d[1]에 저장한 후 digits는 2, x는 0이 됩니다. x가 0
이 되면 while문은 반복을 끝냅니다.
보충수업 2-7 전위형 증가 연산자와 후위형 증가 연산자
증가(increment)를 수행하는 증가 연산자 ++는 앞에 놓느냐 뒤에 놓느냐에 따라 동작이 다릅니다.
전위형 증가 연산자 ++a
++를 앞에 놓으면 식 전체를 평가하기 전에 피연산자의 값을 증가합니다. 그러므로 a 값이 3일 때 b =
++a를 실행하면 먼저 a가 증가한 값인 4가 됩니다. 그런 다음 ++a를 평가한 값 4를 b에 대입합니다.
결국 a와 b는 4가 됩니다.
후위형 증가 연산자 a++
++를 뒤에 놓으면 식 전체를 평가한 후에 피연산자의 값을 증가합니다. 그러므로 a 값이 3일 때 b =
a++를 실행하면 먼저 a++를 평가한 값 3을 b에 대입합니다. 그런 다음 ++가 수행되어 a는 4가 됩니
다. 결국 a는 4, b는 3이 됩니다.
실습 2-8[B] •완성 파일 chap02/card_conv.c
01 int main(void) 실행 결과
02 {
10진수를 기수 변환합니다.
03 int i; 변환하는 음이 아닌 정수 : 59
04 unsigned no; /* 변환하는 정수 */ 어떤 진수로 변환할까요?(2-36) : 2
05 int cd; /* 기수 */ 2진수로는 111011입니다.
06 int dno; /* 변환 후 자릿수 */ 한 번 더 할까요?(1 … 예/0 … 아니오) : 0
02• 기본 자료구조 73