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
   68   69   70   71   72   73   74   75   76   77   78