로컬 푸드

" c 언어 진도 "에 해당되는 글 1건

  1. C 언어 정리

C 언어 정리


C 언어 정리 c 언어 진도  

제  1  장 .  C 언어의 소개와 특징 


1. C 의 기원


    C 는 Dennis Ritchie 와 Ken Thompson 이라는 두사람이 미국의 벨연구소에서 UNIX 라는

   OS 를 만들던 중에 1972 년 Dennis Ritchie 에 의해 탄생하게 되었다.  하지만, 이 언어

   가 처음부터 Dennis Ritchie 에 의해 만들어 졌다고는 말할 수 없다.  C 가 탄생하기 이

   전에 켄 톰슨에 의해서 개발된 B 언어를 모체로하여 개발되었기 때문이다.    이후 C 는

   UNIX OS( Operating System )의 개발도구로 사용되어 왔다.  여기서 중요한 것은 그들이

   연구하는 UNIX OS 의 개발도구로서 C 언어를 개발했다는 것이고,  그들은  UNIX OS 개발

   도구로서 사용하기에 편리한 언어로  C 언어를 설계했다는 것이다.   그러므로 C 언어는

   다른 언어에 비해 간소하고 사용하기에 편리하게 구성되어 있다.  대부분의 언어가 사용

   하기에 편리하도록 하는 것을  언어 개발의 근본 목적으로 하고 있으나 이 목적  못지않

   게 다른 중요한 목적도 가지고 있는 것이  프로그래밍 언어들의 특징이다.   예를 들면,

   파스칼( PASCAL )  언어의 중요한 목적중의 하나는 프로그래밍 원칙을 가르치기 위한 기

   초를 제공하는 것을 목적으로 하고있다.  즉, 알고리즘을 위한 언어라고  이해해도 틀린

   말이 아닐성 싶다.  또한, 컴퓨터에 익숙하지 못한 학생들이나  초보자들이 손쉽게 배울

   수 있는 BASIC 언어는 영어와  비슷하게 만들어져 있어  컴퓨터 초보자들에게  부담없는

   언어로 인식되어 오고있다.  이러한 면에서 본다면  C 언어는 프로그래머에게  편리함과

   간결함을 제공하므로서 유저( USER )들에게 친숙한 언어로서의 위치를 확보하고 있다.

  

  

          ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏ 언어의 발달사 ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

          ꠐ 1960 ꠏꠏꠏꠏꠏꠏꠏꠏ ALGOL ꠏꠏꠏꠏꠏꠏꠏꠏꠏ 인텔에서 개발                     ꠐ

          ꠐ                               ( 모듈화 및 규격화에 용이 )       ꠐ

          ꠐ 1963 ꠏꠏꠏꠏꠏꠏꠏꠏ CPL   ꠏꠏꠏꠏꠏꠏꠏꠏꠏ 캠브리지 대학과 런던 대학에서 개발ꠐ

          ꠐ                               ( 사용하기와 배우기가 어렵다. )   ꠐ

          ꠐ 1967 ꠏꠏꠏꠏꠏꠏꠏꠏ BCPL  ꠏꠏꠏꠏꠏꠏꠏꠏꠏ 마틴 리차드 개발                  ꠐ

          ꠐ                               ( CPL 의 간단한 확장 )            ꠐ

          ꠐ 1970 ꠏꠏꠏꠏꠏꠏꠏꠏ B     ꠏꠏꠏꠏꠏꠏꠏꠏꠏ 벨 연구소의 켄 톰슨 개발          ꠐ

          ꠐ                               UNIX 개발을 위한 툴               ꠐ

          ꠐ 1972 ꠏꠏꠏꠏꠏꠏꠏꠏ C     ꠏꠏꠏꠏꠏꠏꠏꠏꠏ 벨 연구소의 덴이 리취 개발        ꠐ

          ꠐ                                                                 ꠐ

          ꠐ  * 참고 *                                                       ꠐ

          ꠐ UNIX : BELL 연구소에서 개발한 운영체제의 등록상표로서 1969 년   ꠐ

          ꠐ       Ken Thompson 이 s/w( software ) 개발을 위한 도구로 만들   ꠐ

          ꠐ       었다. system 이 모듈화 되었으므로 기종이 바뀌어도  응용   ꠐ

          ꠐ       s/w의 전환에 노력과 시간이 적게든다. 그러므로, 기종차이   ꠐ

          ꠐ       에서 오는 s/w의 호환성을 해결하여 이식성 높은 운영체제로  ꠐ

          ꠐ       운영체제의 표준화를 이루는 계기를 만들었다.               ꠐ

          ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ       


2. C 의 장점


   효율적인 언어 : Compact 언어, 빠른 실행, 융통성있는 언어.

      

      ☞ C 를 사용함으로써 가장 뚜렷한 장점은 톱다운 계획, 구조화 프로그래밍이 수월하

        고, 프로그램의 모듈화된 설계를 용이하게 할 수 있다는 것이다. 그 결과 프로그램

        의 신뢰도가 높고, 프로그래밍한 프로그래머가 아니더라도 프로그램을 쉽게 이해할

        수 있다는 것이다.


  


                                        - 1 - 

   ② 이식성 언어 :  한 SYSTEM 에서 수행되는 프로그램을  전혀 수정을 안하거나, 약간만

                   수정하여 다른 SYSTEM 에서 수행시킬 수 있다.


      ☞ C 는 이식하기가 편리한 프로그램으로서 어떠한 시스템을 위하여 만들어진 C 프로

        그램을 다른 시스템에서 실행시키기 위해 그 프로그램의 극히 일부분만 수정하거나

        또는 전혀 수정하지 않아도 실행이 가능하다는 것이다.  수정이  필요한  경우라도

        대개는 주 프로그램에  수반되는 헤더 파일( FILE )의  몇가지 엔트리만 바꾸면 된

        다. 물론 대부분의 언어가 이식하기에 편리하도록 만들어 졌지만  IBM-PC BASIC 프

        로그램을 APPLE BASIC 으로 바꾸거나 IBM FORTRAN 프로그램을  UNIX 시스템에서 실

        행시키려는 시도를 해 본 독자는 충분히 이해를 할 수 있을 것이다.


   ③ 강력한 언어 : UNIX 운영체제의 대부분이 C 로 구성되어 있고, ASSEMBLY 처럼 미세한

                   제어를 할 수 있다.( UNIX 는 95% 의 C 와 5% 의 ASSEMBLY 로 구성 )


      ☞  C 는  강력하고  융통성이 많다. 예를들어, 현재 가장 강력하고 융통성이 많다는

        UNIX OS 의 대부분이 C 로 되어 있다. UNIX 는 FORTRAN, APL, PASCAL, LISP, LOGO,

        BASIC 등과 같은  다른 언어에  대한  컴파일러와 인터프리터를 포함하고 있으므로

        UNIX 를 사용하는 기계에서 FORTRAN 을 사용할 때 최종적으로 실행가능한 프로그램

       을 만들어내는 작업을 C 프로그램이 하게 된다. C 프로그램은 또한 물리학이나 공학

       문제를 해결하거나 영화의 움직이는 장면을 만드는데 응용이 되기도 한다.


        ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ       

        ꠐ  HIGHEST-LEVEL LANGUAGE :    MODULA-2   PASCAL   COBOL              ꠐ

        ꠐ  ( 상위 단계 언어 )          FORTRAN    BASIC    ADA                ꠐ

        ꠐ  MIDDLE-LEVEL  LANGUAGE :    FORTH      C                           ꠐ

        ꠐ  ( 중급 단계 언어 )                                                 ꠐ

        ꠐ  LOWEST-LEVEL  LANGUAGE :    MACRO-ASSEMBLER    ASSEMBLER           ꠐ

        ꠐ  ( 하위 단계 언어 )                                                 ꠐ

        ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏ 프로그래밍 언어 사이에서의 C 의 위치 ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

                                                                            


   C 는 중급 언어이다.   여기서 중급이라는 말은 C 언어가 비 효율적이고,  쓰기 어렵고,

  BASIC, PASCAL 과 같은 고급언어 보다 수준이 낮다는  부정적인 의미가 아니고, 고급언어

  적인  요소와  어셈블리어의  기능적  요소의  결합  때문에  중급언어라고  불린다.


3. C 미래                                                                            

                                                                            

   C 는 이미 UNIX 시스템의 미니컴퓨터 세계를 지배하고 있으며,  이제는 개인용 컴퓨터에

  까지 그 세력을 뻗치고 있다. 많은 소프트웨어  개발업체에서  워드프로세서  컴파일러와                                                                             

  같은 그들의 상품을 C 로 작성하고 있다. 왜냐하면 C 가 컴팩트하고 효율적이고 프로그램

  수정이 용이하고 새로운 컴퓨터 모델에 적용이 쉽다는 사실을 알고 있기 때문이다.  프로 

  그램 개발자나 C 에 능통한 사람들에게 좋은 것은  다른 사람에게도 역시 좋은 것으로 생

  각을 확장시킬 수 있을 것이다.  결국 C 는 1980 년대와  1990 년대의  가장 중요한 언어

  중의 하나가 될 것이다. 이것은 이미 미니 컴퓨터와  개인용 컴퓨터에서 사용되고  있고,

  소프트웨어 개발업체, 전산과 학생들  그리고 컴퓨터 애호가들 사이에서 이  언어가 가장

  많이 사용되고 있는 것으로 나타나고 있으며,  현재 외국으로 부터 프로그램  개발의뢰가

  들어오거나 국내의 새로운 프로그램을 개발할 경우 선택되는 언어는 단연  C 언어가 으뜸

  일 것이다. 앞으로 C 의 미래는 매우 밝다고 할 수 있으며, 컴퓨터 분야에  관심을  가지

  려는 독자들과 전산을 전공하려는 독자들에게 필수적인 프로그래밍 언어로서의 자리를 굳

  힐 것으로 예상된다.


                                        - 2 - 

2 변수 연산자, 수식 표현방법                            


1. 기초 소개


   * 프로그램 구조 *

   C 프로그램은 함수( FUNCTION )들의 집합으로 구성되어 있다. 함수란 특정한 일을 수행

  하기 위해 설계된 하나 이상의 C 문장들로 구성되어 있으며, 다음의 간단한 프로그램 예

  제를 보면서 설명하도록 하겠다.   보다 구체적인 사항은 차차 다루기로 하겠고, 우선은

  예제 설명방식을 취하도록 하겠다.


   /* C Sample Program */

   main()

   {

    printf("This is a sample.n");

    }


   위 프로그램은 This is a sample 을 화면에 출력하는 프로그램이다.

   첫번째 라인의 /* 와 */ 는 주석으로서 컴파일은 되지 않고 다만 프로그램의 진행사항이

   나 프로그램의 로직등을 설명하는 것이다. 두번째 라인의 main() 은 C 프로그램의 시작

   을 알리는 것이다. { 기호는 블럭의 시작을 알리는 것으로 우리가 C 프로그램을 작성할

   때 처음 시작은

    main()

    {

   로 시작한다고 알면 되겠다.

   printf()은 하나의 함수로서 괄호안의 형식대로 화면에 출력하라는 의미를 지니고 있다.

   ; 은 한문장이 끝났음을 알려준다.

   맨 아래의 } 는 블럭의 끝을 알리는 것이다.

   이해가 안된 사람들을 위해서 보다 구체적인 설명으로 들어가겠다.

   main() 은 C 프로그램이 수행될 때 처리의 시작을 알리는 함수문을 나타낸다. 그러므로

   하나의 프로그램내에 한번만 나타나야 한다.

   {,}

   main() 의 m 자 밑의 { 은 함수 몸체( Body )의 시작을, } 은 몸체의 끝을 나타낸다.


2.   


  ▶▶ 변수명 ◀◀


    ․8 자 이후는 식별이 불가능하다.

    ․특수문자는 사용할 수 없다.( 예외 _ )

      ( The first character must be a letter or an underscore. )

       올바른 예....   babo  hot_dog   atom1   _hot

       그른   예....   1234  hot-dog   a*b












                                        - 3 -

  ▶▶ 변수형 ◀◀ 


C 프로그램에서 사용되는 변수는 사용되기 전에 변수의 형이 먼전 선언 되어야 한다.이것은 필요한 변수를 미리 염두에 두어야 하기 때문에 프로그램 분석에 많은 도움을 줄 것이다. 변수가 갖을 수 있는 값의 크기는 변수 형 선언에서 결정이 되며, C 에서 사용되는 변수형과 수치는 아래의 표와 같다.


     ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

     ꠐ     변  수  형     ꠐ 비트수 ꠐ      수 치 범 위       ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ char               ꠐ   8    ꠐ   -128 ~ 127          ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ unsigned char      ꠐ   8    ꠐ   0 ~ 255             ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ signed char        ꠐ   8    ꠐ   -128 ~ 127          ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ int                ꠐ  16    ꠐ   -32768 ~ 32767      ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ unsigned int       ꠐ  16    ꠐ   0 ~ 65535           ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ signed int         ꠐ  16    ꠐ   -32768 ~ 32767      ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ short int          ꠐ  16    ꠐ   -32768 ~ 32767      ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ unsigned short int ꠐ  16    ꠐ   0 ~ 65535           ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ signed short int   ꠐ  16    ꠐ   -32768 ~ 32767      ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ long int           ꠐ  32    ꠐ-2147483648~2147483647 ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ signed long int    ꠐ  32    ꠐ-2147483648~2147483647 ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ unsigned long int  ꠐ  32    ꠐ   0 ~ 4294967296      ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ float              ꠐ  32    ꠐ  3.4E-38 ~ 3.4E+38    ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ double             ꠐ  64    ꠐ  1.7E-308~1.7E+308    ꠐ

     ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

     ꠐ long double        ꠐ  80    ꠐ  3.4E-4932~1.1E+4932  ꠐ

     ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


▶▶ 변수선언( Variable Declaration) ◀◀


    변수 선언의 일반적인 형태는 다음과 같다.

     변수형  변수_리스트;


   변수 리스트는 하나 이상의 콤마(,)로 구분되는 변수의 집합이며, 선언문의 마지막은

  ; 으로 끝나야 한다. 다음은 변수 선언의 예이다.



꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

ꠐ  int                a = 100, b;     ꠐ      여기서 *string 은  문자열에 대한 포인터

ꠐ  unsigned int                j;     ꠐ      선언으로 C 언어가 다른 언어에 비해 변수

ꠐ  float            han,song,jung_a;  ꠐ      형에 관한한 강점을 지닌  변수 형이라 할

ꠐ  char             ch, *string;      ꠐ      수 있다. 포인터는 수치, 문자열 데이터등

ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ      모두에 사용가능하다.  포인터에 관해서는

뒷부분에서 자세히 다루기로 하겠다. 정수 변수 a 는 선언시 100 으로 초기화 된다.













                                        - 4 -

3. 연산자


  다른 언어에 비하여 C 언어에서 제공하는 연산자의 수는 대단히 풍부하다.  이런 점은 초

보자에게 약간의 어려움을 전달할 수도 있겠지만, 조금만 참고 공부하다 보면 수식의 작성

에 있어서 짧아진 코드에 경탄을 금치 못할 것이다.


1) 산술 연산자 ( Arithmetic Operation )


    ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

    ꠐ 덧 셈 : + ꠐ  뺄셈 : - ꠐ 곱셈 : * ꠐ 나눗셈 : / ꠐ 나머지 : % ꠐ

    ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


2) 관계 연산자( Relational Operation )                                              

                                                                                    

    ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

    ꠐ 연 산 자 ꠐ  부 호 ꠐ 연 산 자  ꠐ  부 호   ꠐ   연 산 자   ꠐ  부 호  ꠐ

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

    ꠐ  같 다   ꠐ   ==   ꠐ  적 다    ꠐ    <     ꠐ 크거나 같다  ꠐ   > =   ꠐ

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ

    ꠐ 같지않다 ꠐ   !=   ꠐ  크 다    ꠐ    >     ꠐ 작거나 같다  ꠐ   < =   ꠐ

    ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


▶▶ 연산자 ◀◀


1. 44 개의 연산자

2. 연산자의 우선순위 : 15 계급

3. 연산자의 결합성 : a*b/c 는 좌결합성( ← ).......   우결합성은 → 로 표시                                                                        

                                                                      

    ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠏꠏꠏꠏꠈ     

    ꠐ 우선순위 ꠐ      형  명 칭          ꠐ       연    산    자      ꠐ 결합성 ꠐ

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠋ

    ꠐ    1     ꠐ Primary ( 1 차 연산자 ) ꠐ ( ), [ ], . , ->          ꠐ   →   ꠐ

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠋ   

    ꠐ    2     ꠐ unary   ( 단항 연산자 ) ꠐ *, &, -, !,~, ++, sizeof  ꠐ   ←   ꠐ

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠋ   

    ꠐ    3     ꠐ 승법 연산자(이항연산자) ꠐ *, /, %                   ꠐ        ꠐ

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ        ꠐ   

    ꠐ    4     ꠐ 가법 연산자(     ″   ) ꠐ +, -                      ꠐ        ꠐ

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ        ꠐ   

    ꠐ    5     ꠐ shift 연산자(    ″   ) ꠐ >>, <<                    ꠐ        ꠐ

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ        ꠐ   

    ꠐ    6     ꠐ 관계 연산자(    ″    ) ꠐ <, >, <=, >=              ꠐ        ꠐ

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ        ꠐ   

    ꠐ    7     ꠐ 등가 연산자(    ″    ) ꠐ ==, !=                    ꠐ   →   ꠐ   

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ        ꠐ   

    ꠐ    8     ꠐ bit 곱 연산자(   ″   ) ꠐ &                         ꠐ        ꠐ   

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ        ꠐ   

    ꠐ    9     ꠐ bit 차 연산자(   ″   ) ꠐ ^                         ꠐ        ꠐ     

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ        ꠐ     

    ꠐ   1 0    ꠐ bit 합 연산자(   ″   ) ꠐ |                         ꠐ        ꠐ     

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ        ꠐ   

    ꠐ   1 1    ꠐ 논리곱 연산자(   ″   ) ꠐ &&                        ꠐ        ꠐ     

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ        ꠐ     

    ꠐ   1 2    ꠐ 논리합 연산자(   ″   ) ꠐ ||                        ꠐ        ꠐ     

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠋ   

    ꠐ   1 3    ꠐ 조건 연산자             ꠐ ? :                       ꠐ        ꠐ

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠋ   ←   ꠐ   

    ꠐ   1 4    ꠐ 대입 연산자             ꠐ =, +=, -=, *=, /=, %=, &= ꠐ        ꠐ     

    ꠉꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠊꠏꠏꠏꠏꠏꠏꠏꠏꠋ     

    ꠐ   1 5    ꠐ 순서 연산자             ꠐ |=, ^=, <<=, >>=          ꠐ   →   ꠐ     

    ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠏꠏꠏꠏꠎ   

                                                                                    













                                        - 5 -


▶▶ 변수형 변환 ◀◀                                                               

                                                                              

   ☞ 연산자가 서로 다른 형의 피연산자를 갖게 되면 컴파일러에 의해 컴파일 되는 과정에

     서 피연산자들 중 저장할 수 있는 수치의 범위가 큰 피연산자의 형으로 변환하여 처리

     시킨다. 즉,정수( integer ) i 와 실수( float ) j 의 연산 i + j 는 실수가 정수보다

     큰 수를 저장할 수 있으므로 i 가 실수로 바뀌어 연산이 된다.  변수의 연산식에 있어

     변수 변환규칙은 다음과 같이 정리될 수 있다.


     ①  연산식의 피연산자중에 ‘long double’ 형이 있으면 다른 피연산자의 형은 ‘long

        double’ 이 된다.

     ②  연산식의 피연산자중에 ‘double’ 형이 있으면 다른 피연산자의 형은 ‘double’ 이

        된다.

     ③  연산식의 피연산자중에 ‘float’ 형이 있으면 다른 연산자형은 ‘float’ 이 된다.

     ④  연산식의 피연산자중에 ‘char 또는 short’ 형이 있으면 두 피연산자의 형은

        ‘int’로 바뀐다.

     ⑤  연산식의 피연산자중에 ‘long’ 형이 있으면 다른 피연산자의 형은 ‘long’이 된다.

     ⑥  연산식의 피연산자중에 ‘unsigned’ 형이 존재하면 다른 피연산자의 형도

        ‘unsigned’ 으로 바뀐 다음, ①~⑤ 까지의 규칙을 반복한다.


* 한편, 대입문에 있어서 변수형의 변환은 변수 선언부 왼쪽의 형에 맞도록 오른쪽 수식의

  결과  수치가  저장된다고  생각하면  된다.  만약 x 가 실수이고  i 가 정수이면 대입문

  x = i; 는 i 가 실수로 바뀌어 실행됨으로써 수치를 잃지 않지만, i = x;  일때는 i 에 x

  의 정수 값만을 취하게 됨으로써 소수점 이하의 값을 잃게된다.


▶▶ 캐스트( cast ) ◀◀


  변수형을 변환시키는 또 한가지의 방법은 수식에서 변수 또는 수식에 변환할 변수명을 지

시하는 방법이 있는데, 형식은 다음과 같다.

    ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

    ꠐ ( 변환할 변수명 ) 수식 또는 변수       ꠐ

    ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

   정수 x 가 2 일때,  x / 3 을 계산하면 정수형 연산이 되어  소수점 이하를  잃게 된다.

이러한 폐단을 없애기 위하여 캐스트를 사용하는 것이다. 먼저 x 를 캐스트로 이용하여 실

수형으로 변환시키고 연산을 하면 소수점 이하의 정확한 결과를 얻을 수 있다.


    (float)x/3;


캐스트 연산자에 대한 예제는 진도가 조금 진행된 후에 다루기로 하겠다. 왜냐하면, 아직

여러분들은 printf 문이나 scanf 문 조차도 배우지 못했기 때문이다.


# 다음은 C 에서 제공하는 기초적인 함수를 다루어 보겠다. #


◉ printf 함수 & scanf 함수 ◉

   ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ             

   ꠐ < 형식 > printf("출력양식",출력대상);     ꠐ             

   ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ             




   의미 : 화면에 출력대상을 출력양식에 맞게 출력하라.......

          출력양식에 덤으로 제공되는 기능은 와 함께 사용하여 라인피드와

          탭기능등과 같은 기능을 화면에서 나타낼 수 있다.

          이러한 것들을 escape sequence 라 불리며 아래의 표와 같다.

          자세한 설명은 예제를 다루면서 하기로 하겠다.


                                        - 6 -


         ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

         ꠐ n line feed       : 줄을 바꿈                                   ꠐ

         ꠐ t TAB             : 다음 탭 위치로 이동                         ꠐ

         ꠐ b Back Space      : 인쇄 반대 방향으로 1 칸 후진                ꠐ

         ꠐ r Carriage Return : 리턴키 역활을 함                            ꠐ

         ꠐ f Form Feed       : 출력용지를 1 페이지 전진시킴                ꠐ

         ꠐ \ Backslash       : 를 인쇄                                   ꠐ

         ꠐ ' Apostrophe      : ' 를 인쇄                                   ꠐ

         ꠐ " Quote           : " 를 인쇄                                   ꠐ

         ꠐ Null            : 동작을 하지 않음                            ꠐ

         ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


예를들어.......


        printf("This is a sample.nt");

        ꠌꠏꠏ▶ 화면에 This is a sample.을 출력하고 줄을 바꾸어서 커서키의 위치를

             다음 탭의 위치로 가게하라는 의미를 지니고 있다.


        printf("The number is %d.b",3);

        ꠌꠏꠏ▶  화면에 The number is 3. 을 출력하고 그 줄에서 한칸뒤로 후진하라는 의미

             이다. 따라서, 출력결과는 The number is 3 이 되고 마침표는 사라진다. 그리

             고 The number is 3_ 과 같이 3 뒤에 커서키가 위치하게 된다.


  ※ 참고 : 위에서 나오는  %d 와 같은 것은 출력양식내에 들어가며 출력 대상을 어떤식으 

           로 화면에 나타낼 것인가를 결정하는 것이다. 가령, %d 는 출력대상을 십진수로

           받아들여 화면에 출력한다는 의미를 지니는 것이고, %c는 출력대상을 하나의 문

           자로 받아들여 화면에 출력한다는 의미를 지니는 것이다.   보다 자세한 사항은

           아래에 도표로 표시하였다.

          ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

          ꠐ %d : 십진수로 받아서 출력                                    ꠐ

          ꠐ %o : 팔진수로 받아서 출력                                    ꠐ

          ꠐ %x : 십육진수로 받아서 출력                                  ꠐ

          ꠐ %c : 하나의 문자를 받아서 출력                               ꠐ

          ꠐ %s : 하나의 문자열을 받아서 출력                             ꠐ

          ꠐ %u : 부호없는 정수로 받아서 출력                             ꠐ

          ꠐ %e : float 의 수치를 지수형식으로 출력                       ꠐ

          ꠐ %f : float 의 수치를 실수형식으로 출력                       ꠐ

          ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


예제 1 ) 10 진수 12345 를 8 진수, 10 진수, 16 진수로 출력할 수 있는 프로그램을 작성하

        라.(주의: 여기서 여러분들은 책을 덮고서 스스로 프로그램을 짜본후에 다시 이 책

        을 펼치기를 바란다. 그것이 전문가에 이르는 가장 빠른 방법이 될 것이다.)

          ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

          ꠐ main()                                                          ꠐ

          ꠐ {         /* 프로그램의 시작을 알림 */                          ꠐ

          ꠐ  int x=12345;     /* x 라는 정수형에 12345 로 초기화를 시킴 */  ꠐ

          ꠐ  printf("%dt",x); /* x 를 십진수로 받아서 출력하라. */         ꠐ

          ꠐ  printf("%ot",x); /* x 를 팔진수로 받아서 출력하라. */         ꠐ

          ꠐ  printf("%xt",x); /* x 를 십육진수로 받아서 출력하라. */       ꠐ

          ꠐ  }          /* t 는 탭기능과 같다. */                          ꠐ

          ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

           실행결과 : 12345     30071     3039


▶▶ 문자형 ◀◀


․문자상수는 apostrophe 내에 표시한다.

․문자상수의 값은 문자 집합내에서 그 문자의 수치이다.



                                        - 7 -

   ASCII 코드( 정보교환용 미국 표준 코드 )

   EX) 'A'(문자) = 1000001( 2 진수 ) = 101( 8 진수 ) = 41( 16 진수 ) = 65( ASCII )


  예제 2 ) 화면에 AB C  D   E 를 출력하는 프로그램을 작성하시오.

           ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

           ꠐ main()                                            ꠐ

           ꠐ {                                                 ꠐ

           ꠐ  printf("%c",'A');                                ꠐ

           ꠐ  printf("%c%2c%3c%4c",'B','C','D','E');           ꠐ

           ꠐ  }                                                ꠐ

           ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

           결과 : ꠆ꠏꠏꠏꠇꠏꠏꠏꠇꠏꠏꠏꠇꠏꠏꠏꠇꠏꠏꠏꠇꠏꠏꠏꠇꠏꠏꠏꠇꠏꠏꠏꠇꠏꠏꠏꠇꠏꠏꠏꠇꠏꠏꠏꠈ 

                  ꠐ A ꠐ B ꠐ   ꠐ C ꠐ   ꠐ   ꠐ D ꠐ   ꠐ   ꠐ   ꠐ E ꠐ 

                  ꠌꠏꠏꠏꠍꠏꠏꠏꠍꠏꠏꠏꠍꠏꠏꠏꠍꠏꠏꠏꠍꠏꠏꠏꠍꠏꠏꠏꠍꠏꠏꠏꠍꠏꠏꠏꠍꠏꠏꠏꠍꠏꠏꠏꠎ 

    *  %2c 의 의미는 2자리를 확보한 후 마지막자리 부터 그 기호를 출력하라는 의미임.

    * %-2c 의 의미는 2자리를 확보한 후 첫째자리 부터 그 기호를 출력하라는 의미임.

    * 위의 프로그램을 스스로 변형시킨 후 실행결과를 확인해 보기를 바란다.


  예제 3 ) 화면에 다음과 같이 출력되도록 프로그램을 작성하시오.

           ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

           ꠐ*                                ꠐ

           ꠐ*                                ꠐ

           ꠐ  *                              ꠐ

           ꠐ    *                            ꠐ

           ꠐ      *                          ꠐ

           ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

  풀이 )  ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

          ꠐ main()  /* ' ' 사이에 있는것은 문자로 간주 */  ꠐ

          ꠐ {                                              ꠐ

          ꠐ  printf("%cn",'*');                           ꠐ

          ꠐ  printf("%1cn",'*');                          ꠐ

          ꠐ  printf("%2cn",'*');                          ꠐ

          ꠐ  printf("%3cn",'*');                          ꠐ

          ꠐ  printf("%4cn",'*');                          ꠐ

          ꠐ  }                                             ꠐ

          ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ



▶▶ 문자열 상수 ◀◀


  ① 문자열은 따옴표로 묶는다.


  ② 문자열은 컴퓨터 내부에서 배열로 기억되며, 맨끝에 null('')을 추가시켜 기억시킨다.


예제 4 ) 문자열을 이용하여 화면에 computer! 라고 출력시키는 프로그램을 작성하라.

         ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

         ꠐ main()   /* " " 안에 있는 것은 문자열로 기억됨. */       ꠐ

         ꠐ {                                                        ꠐ

         ꠐ  printf("%s","computer!");                               ꠐ

         ꠐ  }                                                       ꠐ

         ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


◉ scanf 함수 ◉

꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ        

ꠐ < 형식 > scanf("입력양식",&입력대상);  ꠐ        

ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ 

의미 : 입력 대상을 입력양식에 맞게 받아 들인다.

주의 : 입력 대상앞에는 포인터와 배열을 제외하고는 & 를 반드시 붙이도록 한다.



                                        - 8 -

예제 1 ) 두 수를 입력받아서 합을 출력하는 프로그램을 작성하시오.

        ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

        ꠐ main()                                               ꠐ

        ꠐ {                                                    ꠐ

        ꠐ  int x,y,z;                                          ꠐ

        ꠐ  scanf("%d %d",&x,&y);                               ꠐ

        ꠐ  z = x + y ;                                         ꠐ

        ꠐ  printf(" %d + %d = % d",x,y,z);                     ꠐ

        ꠐ  }                                                   ꠐ

        ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


예제 2 ) 5 명의 성적을 입력받아 평균을 구하는 프로그램을 작성하시오.

        ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

        ꠐ main()                                               ꠐ

        ꠐ {                                                    ꠐ

        ꠐ  int a,b,c,d,e;                                      ꠐ

        ꠐ  float f;                                            ꠐ

        ꠐ  printf(" 5 명의 성적을 입력하시오.n");             ꠐ

        ꠐ  scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);             ꠐ

        ꠐ  f = ( a + b + c + d + e ) / 5;                      ꠐ

        ꠐ  printf(" 5 명의 평균은 %4f 입니다. ", f);           ꠐ

        ꠐ  }                                                   ꠐ

        ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

※ printf 문과 scanf 문이 끝났다. 앞부분을 이해한 사람이라면 이제는 스스로 성적관리

   프로그램을 엉성하게 나마 작성할 수 있을 것이다.


▣ 이제 scanf 문에 대한 예제를 더 들어보고 2 장을 마치기로 하겠다. ▣



  예제 )  ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

          ꠐ  main()                                                           ꠐ

          ꠐ  {                                                                ꠐ

          ꠐ    char first,second,third;                                       ꠐ

          ꠐ    printf("What's your name? ");                                  ꠐ

          ꠐ    scanf("%c%c%c",&first,&second,&third);                         ꠐ

          ꠐ    printf("%c%c%c is %sn",first,second,third,"lucky name");      ꠐ

          ꠐ    }                                                              ꠐ

          ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


   ※ 실행결과 : What's your name? _ 이란 메시지가 나오면서 문자입력을 기다리고 있다.

                여기에 임의의 값을 자신이 입력을 한다.  필자의 이름 약자를 따서 c j c

                를 차례로 입력하면 다음라인에 다음과 같은 표현이 찍히게 된다.   c j c

                is lucky name 이라고...   앞에서 언급한 바와 같이 %c 는 한문자 입력을

                나타내고 %s 는 한문자열의 입력을 나타내므로 “lucky name” 은  %s 로 받

                았다.




   ※ 프로그램의 예제를 많이 들지를 못했다.  이유는 아직 우리는  배운것이 별로 없기에

     이 상태에서 예제를 아무리 많이 들어봐야 별차가 없기 때문이다.  다음장에서 반복문

     을 배운 뒤에 보다 깔끔하게 프로그램 예제를 들기로 하겠다. 이것으로 2 장은 마치기

     로 한다.








                                        - 9 -

제 3 장. 제어문 


1. 프로그램 제어문


   ① if - else 문


      < 형식 > if(식)

               실행문;

      ※ 의미 : if문 안의 식이 조건에 맞으면 실행문을 실행시켜라.


      < 형식 > if(식)

               실행문 1;

               else

               실행문 2;

      ※ 의미 : if문 안의 식이 조건에 맞으면 실행문 1 을 실행하고 조건에 위배되면

               else 문에 있는 실행문 2 를 실행시켜라. 위에 표시된 else 문은 경우에

               따라서 없을 수도 있다.

# 이제 if 문을 이용하여 간단한 프로그램을 작성해 보자. #

     ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

     ꠐ  main()                                              ꠐ

     ꠐ  {                                                   ꠐ

     ꠐ    int x=35,y;                                       ꠐ

     ꠐ    printf("Let's find X's value.n");                ꠐ

     ꠐ    printf("Enter any X's value : ");                 ꠐ

     ꠐ    scanf("%d",&y);                                   ꠐ

     ꠐ    if( x == y )                                      ꠐ

     ꠐ     printf("All right. X's value is %d.",y);         ꠐ

     ꠐ    else if( x > y )                                  ꠐ

     ꠐ     printf("Oh! no. You must enter large number.");  ꠐ

     ꠐ    else                                              ꠐ

     ꠐ     printf("Oh! no. You must enter small number.");  ꠐ          

     ꠐ    }                                                 ꠐ

     ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


  * 아직 반복문을 배우지 않았기에 한번만 실행이 되게 프로그램을 작성해 보았다.

   앞으로 진도가 나갈수록 위의 프로그램들을 여러분 스스로가 깔끔하게 만들어 나갈 수

   있을 것이다.


예제 1 ) 정수 a,b,c 중 가장 큰 수를 찾아내는 프로그램을 작성하라.

        ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

        ꠐ main()                                           ꠐ

        ꠐ {                                                ꠐ

        ꠐ  int a,b,c,max;                                  ꠐ

        ꠐ  scanf("%d %d %d",&a,&b,&c);                     ꠐ

        ꠐ  if( a > b && a > c )                            ꠐ

        ꠐ      max = a;                                    ꠐ

        ꠐ  else if( b > a && b > c )                       ꠐ

        ꠐ      max = b;                                    ꠐ

        ꠐ  else                                            ꠐ

        ꠐ      max = c;                                    ꠐ

        ꠐ  printf("Maximum number is %d.n",max);          ꠐ

        ꠐ  }                                               ꠐ

        ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ



※ 프로그램 설명 : a,b,c 위의 세 수를 입력 받아서 가장 큰 수를 가리는 프로그램이다.

                  if 문 안의 && 기호는 논리적 and 로서 두 조건이 성립할 때에만 실행문

                  을 실행시킨다. 따라서, 둘 중 하나라도 만족시키지 않는다면 else 문의

                  조건을 찾아서 조건에 맞는 문장을 실행시킨다.


                                        - 10 -

   ② for 문


      < 형식 > for( 식 1 ; 식 2 ; 식 3 )       < 형식 > for( 식 1 ; 식 2 ; 식 3 ){

                     실행문;                                 실행문;

                                                              } 

      ※ 의미 : 식 1 에서 시작하여 식 3 에 의해서 변하고 식 2를 만족하는 동안 실행부        

               를 반복한다.


      ※ 참고 : 위의 if 문과 for 문 뒤에 실행문은 블럭 단위가 될 수도 있다. 프로그램

               실행부가 길어지면 활괄호를 사용하여 블럭 단위로 묶어서 사용할 수 있다.

               만약, 실행부가 2 이상인데 블럭단위로 묶어 주지 않으면 if 문과 for 문의

               다음 라인에 존재하는 실행부만 실행을 시키고 다음줄은 윗 라인의 실행이

               다 끝난 다음에야 실행이 된다. 여러분은 이러한 실수에 주의해야 한다.

예제 1 ) 다음과 같이 출력할 수 있는 프로그램을 반복문을 이용하여 작성하라.


            *******

            *******

            *******

            *******

            *******


     풀이) ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

           ꠐ  #include <stdio.h>                              ꠐ

           ꠐ  main()                                          ꠐ

           ꠐ  {                                               ꠐ

           ꠐ   int i,y;                                       ꠐ

           ꠐ   for(i=0;i<5;i++){                              ꠐ

           ꠐ                      for(y=0;y<7;y++)            ꠐ

           ꠐ                      printf("*");                ꠐ

           ꠐ                      printf("n");               ꠐ

           ꠐ                     }                            ꠐ

           ꠐ    }                                             ꠐ

           ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


※ 프로그램 설명 : 첫 라인에 나오는 것은 standard input/output header file  라고 읽으

                  며 기본적인 입․출력에 관한 함수에 대하여 정의가 되어있다.   우리가

                  컴파일을 하기 이전 단계인 전처리기( preprocessor )에 의해서 그 정보

                  가 입력되고 컴파일을 할 때 그 정보가 이용되어 해당하는 라이브러리를

                  불러서 프로그램을 실행 파일로 만들어 준다.  그럼 상당히 많이 존재하

                  는 라이브러리를 어떻게 사용할 것인가 하는 질문이 나올 것이다.  이미

                  C 언어를 하기로 마음먹었으면 C LIBRARY 책을 한권 쯤은 가지고 있어야

                  지 된다.  그곳에 C 에서 제공되는 모든 함수들의 정보가 있으므로 우리

                  는 그것들을 참조하여 불러서 사용하기만 하면된다. 그것을 사용하는 법

                  은 뒷부분에서 나올 때마다 자세히 다루기로 하겠다.

                   

                   for 문 내에 있는 의미는 다음과 같다.  i 의 값이 0 부터 5 가  될 때

                  까지 1 씩 증가시키면서 프로그램을 실행시킨다.   따라서,  프로그램은

                  다섯번 반복하여 실행된다. 두번째에 나오는 반복문의 y 도 같은 의미를

                  지니고 있으며, for 문 안의 프로그램을 7 번 반복해서 실행한다. 이 프

                  로 그램을 보고 두번째 for 문 부분이 이해가 잘 안되는 사람이 있을 것

                  이다. 아까 위에서 참고로 읽었던 말들을 상기하기 바란다. 블럭 단위로

                  묶이지 않았다는 점에 착안하기 바란다.  그 점에  유의하면 프로그램은

                  보다 쉽게 이해가 될 것이다.         




                                        - 11 -

예제 2 ) 아래의 프로그램의 결과가 어떻게 될 것인가를 맞추어 보라.


           ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

           ꠐ #include <stdio.h>                          ꠐ

           ꠐ main()                                      ꠐ

           ꠐ {                                           ꠐ

           ꠐ  int i,y;                                   ꠐ

           ꠐ  for(i=0;i<7;i++){                          ꠐ

           ꠐ                    for(y=0;y<i;y++)         ꠐ

           ꠐ                        putchar('*');        ꠐ

           ꠐ                        putchar('n');       ꠐ

           ꠐ                    }                        ꠐ

           ꠐ  }                                          ꠐ

           ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


정답 )        *

              **

              ***

              ****

              *****

              ******

              *******


※ 참고 : putchar() 함수는 stdio.h 에 정의가 되어있으며, 기능은 한 문자를 출력하는 것

         이다. 괄호안에 숫자를 집어넣으면 그 값에 해당되는 ASCII 문자가 찍힌다.

































                                        - 12 -

   ③ while 문

       ꠆ꠏꠏꠏꠏ→ꠋ                    ※ 의미 : while 문안에 있는 조건에 식이  만족을 하

         ꠆ꠏꠏꠏꠍꠏꠏꠏꠈ  false                 면 실행부가 실행이 되고, 식을 만족하지 못

         ꠐ 식 ?  ꠉꠏꠏꠏꠏꠏꠏꠏꠈ                하면 다음 라인이나 다음  블럭으로 건너 띄

         ꠌꠏꠏꠏꠇꠏꠏꠏꠎ       ꠐ                 어 프로그램을 수행한다.

             ꠐtrue       

         ꠆ꠏꠏꠏꠍꠏꠏꠏꠈ     ↓ ↓

         ꠐ 실행부ꠐ   다음 문장

         ꠌꠏꠏꠏꠇꠏꠏꠏꠎ

       ꠌꠏꠏꠏꠏꠏꠏꠎ


   ④ goto 문


      < 형식 > 레벨 :  실행문1;

                       실행문2;

                         ․

                         ․

               goto 레벨;


      # 의미 : 프로그램 실행에서 정의된 레벨로 무조건 분기를 발생시킨다.  레벨과 실행문과의 구분은 :( 콜론 ) 으로하며 레벨의 정의는  변수의 정의방법과 같다. goto 문의 잦은 이용은 프로그램의 이해를 어렵게 함으로 가능하면 사용하지 않는 것이 좋다.  부득이 사용할 경우는 주석( comment )을 이용하여 분기의 목적을 기술하여 놓으면 프로그램의 이해에 도움이 될 것이다.


⑤ 무한 loop


   while( 1 ){

              if( 조건 ) break;

              }


⑥ do ~ while 문

꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏ→ꠐ

     ꠆ꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠈ

     ꠐ 실 행 부 

     ꠌꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠎ

     ꠆ꠏꠏꠏꠏꠏꠍꠏꠏꠏꠏꠈ

     ꠐ 조 건 ?  ꠉꠏꠏꠏ→( 거짓 )

     ꠌꠏꠏꠏꠏꠏꠇꠏꠏꠏꠏꠎ

ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

         ( 참 )


< 형식 > do                             < 형식 > do {

             실행부;                                  실행문;

             whlie( 수식 );                           } while( 수식 );





                                        - 14 -

※ 의미 :  우선은 do 문 안에 있는 실행부분이 실행이 된 다음에 while 문안의 수식을 참

          조하여 프로그램을 계속하여 실행할 것인가를 결정짓는다.


예제 1 ) 어떤 수를 읾었을 때 누적합을 구하는 프로그램을 작성하라.

        ( 단, 입력이 0 이면 프로그램 실행을 중지하도록 하라. )

         ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

         ꠐ  main()                                          

         ꠐ  {                                               

         ꠐ    int k, s=0; /* s 값을 0 으로 초기화 */        

         ꠐ    scanf("%d",&k);                               

         ꠐ    while( k ){                                   

         ꠐ                printf("t%dn",s+=k);            

         ꠐ                scanf("%d",&k);                   

         ꠐ                }                                 

         ꠐ    }                                             

         ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

    ※ 프로그램 설명 : scanf 문에 의해서 받아 들여진 값을 while 문 안에서 비교하여 그

                     값이 0 이 아니면 while 문 내부의 문장을 실행시킨다.  여기서 s+=k

                     는 s=s+k 와 같은 의미로서  k 의 값이 계속해서 s 에 더해져 화면에

                     출력된다.


    ※ 위의 프로그램을 좀 더, compact 한 방법으로 개선하면 다음과 같다.※

        ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

        ꠐ  main()                                          

        ꠐ  {                                               

        ꠐ    int k,s=0;                                    

        ꠐ    while( scnaf("%d",&k),k )                     

        ꠐ          printf("t%dn",s+=k );                 

        ꠐ    }                                             

        ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

    ※ 프로그램 설명 :  프로그램을 실행시키면  while 문 안의 scanf 문을 실행시켜 거기

                       서 입력된 값을 옆의 k 에게 넘겨준다. 그 다음부터는 위의 프로그

                       램과 의미가 같다.


   ▣ for 문과 while 문과 do~while 문을 함께 사용하는 프로그램을 작성해 보자. ▣

        ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

        ꠐ  #include <stdio.h>                                                  

        ꠐ  main()                                                              

        ꠐ  {                                                                   

        ꠐ    int i;                                                            

        ꠐ    for(i=0;i<=10;i++)                                                

        ꠐ       printf("%d",i);                                                

        ꠐ    printf("n");                                                     

        ꠐ    i=0;                                                              

        ꠐ    while( i++<=10 )                                                  

        ꠐ       printf("%d",i);                                                





                                        - 15 -

        ꠐ    putchar('n');  /* 이 부분은 stdio.h 에 정의되어 있다. */        

        ꠐ    i=0;            /* 기능 : 한 문자를 출력하라는 의미. */          

        ꠐ    do                                                                

        ꠐ       printf("%d",i);                                                

        ꠐ    while( i++<= 10 );                                                

        ꠐ    getch(); /* 이 부분은 stdio.h 에 정의되어 있다. */                

        ꠐ    }        /* 기능 : 임의의 키가 들어올 때까지 일시정지 하는 것. */ 

        ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

      ※ 출력결과 :  012346678910

                     1234567891011

                     0123456*******1


      ※ 프로그램 설명 : for 문에서는 0 부터 시작했기 때문에 11 번을 반복해서 아랫 라

                        인을 실행한다. 숫자가 연속해서 붙는 이유는 위에서 다룬 주위사

                        항을 참조할 것. while 문의 수식은 후위형이기 때문에 printf 문

                        에 출력되는 처음 값은 1 이 된다.  i 값이 10 일 때도 조건이 성

                        립하므로 마지막 출력값은 11 이 된다.  do ~ while 문에서는 실

                        행부를 먼저 실행시키기 때문에  0 이 출력이 되고,  뒷부분은 위

                        의 while 문과 같게 된다.


⑦ switch 문


【 형식 】 switch( 수식 )

           {

            case 레벨1 : 실행문1; break;

            case 레벨2 : 실행문2; break;

            case 레벨3 : 실행문3; break;

                      ․

                      ․

                      ․

            default    : 실행문n;

            }

☞ 수식과 레벨은 정수값을 갖어야 하며, 수식의 값이 레벨과 일치하지 않을 때 default 문

  n 을 실행시킨다.  break 문은 프로그램의 실행이 switch 문을 빠져 나와 다음 문장을 실

  행시키게 된다.


예제 ) 아래 프로그램의 출력값을 예측하여 보아라.

       ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

       ꠐ  main()                                                

       ꠐ  {                                                     

       ꠐ   int i;                                               

       ꠐ   for(i=1;i<=3;i++)                                    

       ꠐ   switch(i){                                           

       ꠐ             case 1 : printf("*   --- 1n");break;      





                                        - 16 -

       ꠐ             case 2 : printf("**  --- 2n");break;      

       ꠐ             case 3 : printf("*** --- 3n");break;      

       ꠐ             }                                          

       ꠐ    }                                                   

       ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

      ※ 출력결과 :  *    --- 1

                     **   --- 2

                     ***  --- 3


      ※ 프로그램 설명 :  우선 for 문의 i 값이 1 일때  switch 문에서  1 번에 해당되는

                        case 1 부분이 선택되어지고 반복분이 진행되면서 위와 같은 출력

                        값을 얻어낸다.


⑧ break 와 continue


   1) break 문 : 가장 가까운 block( } )을 한겹만 빠져 나온다.

   2) continue 문 : 실행을 계속하기 위하여 조건 판단 부분으로 돌아간다.


예제 ) break 와 continue 문에 대한 예제의 결과를 예측하여 보라.

    ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

    ꠐ  #include <stdio.h>                                               

    ꠐ  main()                                                           

    ꠐ  {                                                                

    ꠐ    int i;                                                         

    ꠐ    for( i=0; i<10; i++ ){                                         

    ꠐ                           if( i== 5 ) break;                      

    ꠐ                           printf("%d",i);                         

    ꠐ                           }                                       

    ꠐ    putchar('n');                                                 

    ꠐ    for( i=0; i<10; i++ ){                                         

    ꠐ                           if( i==5 ) continue;                    

    ꠐ                           printf("%d",i);                         

    ꠐ                           }                                       

    ꠐ    putchar('n');                                                 

    ꠐ    getch();                                                       

    ꠐ    }                                                              

    ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

    ※ 출력결과 :  01234

                   012346789


    ※ 프로그램 설명 :  출력값을 보면 대충 짐작을 할 것이다.  break 문은 한 블럭을 탈

                      출하고, continue 문은 해당하는 조건에서만 탈출을 하고 다시 블럭

                      의 뒷부분을 계속해서 실행시킨다.







                                        - 17 -

▣ 이제 앞장에서 다루었던 연산자의 사용법에 대하여 다루어 보기로 하겠다. ▣


1.  ( )  : 함수 또는 우선순위를 나타낼 때.


2.  [ ]  : 배열선언, 배열의 요소를 지정할 때.( 이 부분은 뒤에서 다루기로 하겠다. )


3    .   : 구조체 직접 항목 연산자            (              ″                   )


4.  ->   : 구조체 간접 항목 연산자            (              ″                   )


5.  !    : 눈리부정

           E 가 true( 참 )라면          ( true : 0 이 아닌 모든 수 )

            !E : false( 거짓 )          ( false : 0 일 경우 )

           E 가 0 이라면

            !E : true


6.   -   : unary minus( reverse sign )


7.   ++  : 1 증가 연산자 ( INCREMENT )

     --  : 1 감소 연산자 ( DECREMENT )

          * 증가하는 시기에 따라 구분 *

            ꌼ 전위형 : ++ i : 먼저 1 이 증가한 후 수행

            ꍄ 후위형 : i ++ : 일단 수행을 한 후 1 이 증가

예제 1 )

       ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

       ꠐ  main()                                                          

       ꠐ  {                                                               

       ꠐ    int plus = 0;                                                 

       ꠐ    int add = 0;                                                  

       ꠐ    while( plus < 6 ){                                            

       ꠐ                      plus++;                                     

       ꠐ                      ++add;                                      

       ꠐ                      printf("plus = %d, add = %dn",plus,add);   

       ꠐ                      }                                           

       ꠐ    }                                                             

       ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

       ※ 출력결과 :   plus = 1, add = 1

                       plus = 2, add = 2

                       plus = 3, add = 3

                       plus = 4, add = 4

                       plus = 5, add = 5

                       plus = 6, add = 6




                                        - 18 -

※ 프로그램 설명 : 우선 plus 와 add 가 0 일때 while 문 안의 조건이 성립하므로,  while

                  문 안의 내용을 수행한다.  첫번째로 plus++ 에서의  plus 값은 0 이다.

                  plus 값은 다음 라인으로 넘어감과 동시에 그 값은 1 이 된다.  그러나,

                  add 값은 전위형이기 때문에  처음부터 1 이라는 값을 갖는다.  그래서,

                  결과 값의 첫값은  plus = 1, add = 1 이 된다.  plus 가 5 일때 까지는

                  while 문을 반복 수행해서  위의 결과와 같은 수치를 얻어낼 수 있는 것

                  이다.


예제 2 ) 전위형과 후위형에 대한 예제

          ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

          ꠐ  main()                                               

          ꠐ  {                                                    

          ꠐ   int a = 1,b = 1;                                    

          ꠐ   int aplus, bplus;                                   

          ꠐ   aplus = a++;                                        

          ꠐ   bplus = ++b;                                        

          ꠐ   printf(" a   aplus   b   bplus nn");              

          ꠐ   printf(" %d    %d   %d     %dn",a,aplus,b,bplus);  

          ꠐ   }                                                   

          ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

         ※ 출력결과 :  a   aplus   b   bplus

                        2     1     2     2

         ※ 프로그램 설명 : a 와 b 는 1 로써 초기화 되어 있다.  처음에 aplus = a++ 라

                          인에서 후위형이기 때문에 프로그램을 실행한 후 1 이 증가하기

                          때문에 aplus 에 1 이라는 값을 넘겨주고 a 값은 2 가 된다. 다

                          음 라인에서 bplus = ++b 에서 전위형이기 때문에 우선 1 이 증

                          가한 후에 프로그램을 수행한다. 우선, b 의 값은 2 가 되고 자

                          신의 값을 bplus 에게 넘겨주기 때문에  bplus 의 값은 2 가 된

                          다.


예제 3 ) 1+2+3+․․․․․+100 까지 합을 구할 수 있는 프로그램을 작성하시오.

          ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

          ꠐ  main()                                        

          ꠐ  {                                             

          ꠐ   int i=0,s=0;                                 

          ꠐ   while( i < 100 )                             

          ꠐ       s+=++i;                                  

          ꠐ   printf("TOTAL = %dn",s);                    

          ꠐ   }                                            

          ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

         ※ 출력결과 :  TOTAL = 5050


▣ 위의 프로그램에 대한 자세한 설명은 하지 않겠다. 여러분 스스로가 사고하기 바란다.


▣ 위의 프로그램을 for 문을 이용하여 작성하여 보라. ▣




                                        - 19 -

          ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

          ꠐ  main()                                        

          ꠐ  {                                             

          ꠐ   int i,s=0;                                   

          ꠐ   for(i=1;i<=100;i++)                          

          ꠐ       s+=i;                                    

          ꠐ   printf("TOTAL = %dn",s);                    

          ꠐ   }                                            

          ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ


8.  ~  : one's complement


        예)  i   0000 0010 1000 1100

            ~i   1111 1101 0111 0011


9.( type ) : case 연산자 : 수형 변환을 프로그래머가 요구


        예제 )꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

              ꠐ  main()                                     

              ꠐ  {                                          

              ꠐ    int sum1,sum2;                           

              ꠐ    sum1 = 1.6 + 1.8;                        

              ꠐ    sum2 = (int)1.6 + (int)1.8;              

              ꠐ    printf("sum1 = %d,sum2 = %d",sum1,sum2); 

              ꠐ    }                                        

              ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

※ 출력결과 : sum1 = 3,sum2 = 2

※ 의미:  sum1 의 값은 3.4 가 되어  정수부분인 3 만을  자신의 값으로 취한다. sum2 는

          1.6 에서의 정수부분 1 과 1.8 에서의 정수부분 1 을 합한 값인 2 가 된다.


10.  &   : 번지 연산자


        예제 )꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

              ꠐ  main()                                          

              ꠐ  {                                               

              ꠐ   int x,y,z;                                     

              ꠐ   scanf("%d%d",&x,&y);                           

              ꠐ   z=x+y;                                         

              ꠐ   printf("x+y=%d",z);                            

              ꠐ   }                                              

              ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

       ※ 프로그램 설명 : 임의로 두 값을 입력 받아서 그 값의 합을 구한다.


11.  *   : 간접 연산자

           pointer( 지표형 )가 가리키는 대상의 값을 나타냄.


        예제 ) ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

               ꠐ  main()                                                  

               ꠐ  {                                                       

               ꠐ    int x, *y;                                            

               ꠐ    x = 5;                                                




                                        - 20 -

        ꠐ  y = &x;                                                          

        ꠐ  printf("Variable   Address   Valuen");                          

        ꠐ  printf("   x          %x      %dn",&x,x);                       

        ꠐ  printf("   y          %x      %x     %dn",&y,y,*y);             

        ꠐ  }                                                                

        ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

         출력결과)   Variable   Address   Value

                        x         ffd6      5

                        y         ffd8     ffd6    5


       ※프로그램 설명 :  * 을 우리는 포인터라고 읽으며,  뒤에 수반되는 변수는 포인터

                        변수라고 일컫는다.  그러면, 첫째 라인에 있는 int *y 를 해석해

                        보자.  포인터를 나가지 않았기 때문에 아직까지는 아무런 생각도

                        들지 않을 것으로 본다.  앞으로 포인터가 나오면 다음과 같이 해

                        석을 하기로 하자.  변수 y 가 가리키는 곳의 내용이 바로 정수형

                        이라고.... 위의 프로그램은 y 변수에다가 x 의 번지를 건네준 다

                        음에 번지수를 계산하는 프로그램이다. 위에 나온 ffd6 이란 값은

                        x 값의 번지를 나타낸다. 번지값은 16 진수로 표현된다.  y 는 x

                        의 번지를 가지고 있으므로 *y 즉 y 가 가리키는 곳의 내용은 5

                        가 된다. 보다 구체적인 사항은 뒤에서 다루기로 하겠다.


12. sizeof  : 기억 영역의 크기를 byte 수로 나타낸다.

              예제 1 )  ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

                        ꠐ main()                                       

                        ꠐ {                                            

                        ꠐ   int x,y,y1,y2;                             

                        ꠐ   y = sizeof 5;                              

                        ꠐ   y1 = sizeof(int);                          

                        ꠐ   y2 = sizeof x;                             

                        ꠐ   printf("%d  %d  %dn",y,y1,y2);            

                        ꠐ   }                                          

                        ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

                         출력결과) 2  2  2


             ※ 프로그램 설명 : 위의 설명과 같이 sizeof 는  기억영역의 크기를  나타낸

                               다.  y 는 5 가 정수형이기 때문에 2 가 출력되고,  y1 은

                               정수형의 크기가 2 바이트이기 때문에  2 가 출력이 되고,

                               y2 는 x 가 정수형으로 선언이 되었기에 2 라는 값이 출력

                               이 된다.

              예제 2 ) ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

                       ꠐ main()                                                    

                       ꠐ {                                                         

                       ꠐ   printf("char = %d byte.n",sizeof(char));               

                       ꠐ   printf(" int = %d bytes.n",sizeof(int));               

                       ꠐ   printf("long = %d bytes.n",sizeof(long));              

                       ꠐ   printf("unsigned = %d bytes.n",sizeof(unsigned));      

                       ꠐ   printf("float = %d bytes.n",sizeof(float));            

                       ꠐ   printf("double = %d bytes.n",sizeof(double));          



                                        - 21 -

                       ꠐ   printf("char * = %d bytes.n",sizeof(char *));          

                       ꠐ   printf(" int * = %d bytes.n",sizeof(int *));           

                       ꠐ   }                                                       

                       ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

                     ※ 출력결과 : char = 1 byte.

                                    int = 2 bytes.

                                   long = 4 bytes.

                                   unsigned = 2 bytes.

                                   float = 4 bytes.

                                   double = 8 bytes.

                                   char * = 2 bytes.

                                    int * = 2 bytes.

       ※ 주의 : 마지막 두 라인에서 알 수 있듯이 포인터의 크기는 2 바이트를 나타낸다.


13.  %   : 잉여 연산자( 나머지 연산자 )

         ※ '/' 은 몫을 그 값으로 취하는 반면에 '%' 는 나머지를 그 값으로 취한다.

         예 ) 5/3 : 1 인 반면    5%3 : 2 이다...


      예제 ) 초를 분과 초로 나누어 나타내는 프로그램을 작성하여 보자.

            ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

            ꠐ  main()                                                         

            ꠐ  {                                                              

            ꠐ   int sec,min,rem;                                              

            ꠐ   printf("ENTER NUMBER ----> ");                                

            ꠐ   scanf("%d",&sec);                                             

            ꠐ   min = sec / 60;                                               

            ꠐ   rem = sec % 60;                                               

            ꠐ   printf("%d sec is %d min %d sec",sec,min,rem);                

            ꠐ   }                                                             

            ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

     ※ 가령 130 이란 값이 입력이 되면 결과값은 130 sec is 2 min 10 sec 라고 나온다.


14. << , >>  : shift 연산자


           예 ) int x = 3;


          ① x << 3

                   0000 0000 0000 0011 ( x = 3 일때의 메모리 상에서의 2 진 배치 )

                   0000 0000 0001 1000 ( x << 3 일때의 메모리 상에서의 2 진 배치 )


          ② x >> 3

                   0000 0000 0000 0011 ( x = 3 일때의 메모리 상에서의 2 진 배치 )

                   0000 0000 0000 0000 ( x >> 3 일때의 메모리 상에서의 2 진 배치 )


     ※ 참고 :  위에서 int x=3 은 메모리 상에서 2 진수로 표현되며,  그 값은 0000 0000

              0000 0011 과 같이 표현된다. 이 값을 x << 3 과 같이 메모리상의 2 진 코드



                                        - 22 -

              를 우측에서 좌측으로  이동( shift )시키면,  메모리 상으로는 다음과 같이

              표현되며, 0000 0000 0001 1000 그 값은 24 가 된다.  다시 x >> 3 과  같이

              메모리 상의 2 진 코드를 좌측에서 우측으로 이동( shift )시키면,   메모리

              상에서는 다음과 같이 표현되며,  0000 0000 0000 0000  그 값은 0 이 된다.


예제 ) 10 진수 x = 123 을 4 배한 y 와 x 를 좌측으로 2 bit shift 한 z 와 같은가를 확인

     해 보자

       ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

       ꠐ  main()                                       

       ꠐ  {                                            

       ꠐ    int x = 123, y, z;                         

       ꠐ    y = 123 * 4;                               

       ꠐ    z = x << 2;                                

       ꠐ    printf("123 * 4 = %dn",y);                

       ꠐ    printf("123 << 2 = %dn",z);               

       ꠐ    getch();                                   

       ꠐ    }                                          

       ꠌꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠎ

      ※ 출력결과 : 123 * 4 = 492

                    123 22 2 = 492


      ※ 프로그램 설명 : 정수 변수로 x, y, z 를 선언한 후,  x 의 값을 123 으로 초기화

                        시켰다.  z 의 값은  x 의 값을 우측에서 좌측으로 2 만큼 shift

                        시켰다.  123 은 메모리 상에 다음과 같이 표현된다.

                        0000 0000 0111 1011 따라서, z 의 값은 우측에서 좌측으로 2 만

                        큼 이동한 것이므로,   메모리 상에는 다음과 같이 표현이  된다.

                        0000 0001 1110 1100 가 되며, 그 값은 492 가 된다.


15.  ==  : equal sign ( 같다는 표현 : ※ 주의 : C 에서 사용되는 조건판단문에서 같다는

                                               표현은 = 가 아님에 주의하라. )


16.  !=  : not equal sign ( 같지 않다는 표현 )


17.  &   : bitwise and ( 논리곱 )


18.  ^   : bitwise exclusive or ( 배타적 논리합, 논리차 )


19.  |   : bitwise or ( 논리합 )


20.  &&  : logical and ( 논리적 논리곱 )


         예제 )  b = 0;

                 c= a && b++;


               ① a 가 0 일때 결과는 0 이며, 다음 b 의 값은 변하지 않는다.

               ② a 가 0 이 아닐때 결과는 0 이며, b 의 값은 변하게 된다.


                                        - 23 -

    예제 ) 다음의 결과값을 예측하여 보아라.

          ꠆ꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠏꠈ

          ꠐ main()                                         

          ꠐ {