티스토리 뷰

기초

  • 우리가 작성한 소스 코드는 다음 과정을 거쳐 실행 가능한 파일로 변환된다.
    • 소스 코드 -> 향상된 소스 코드 -> 목적 코드 -> 실행 파일
    • 전처리기가 소스코드를 향상된 소스코드로 변환한다.
    • 컴파일러가 향상된 소스코드를 목적 코드로 변환한다.
    • 링커가 목적 코드를 라이브러리 등과 연결하여 실행 파일로 만든다.
  • #include로 외부 라이브러리를 가져와서 사용
    #include <stdio.h>
    #include <strings.h>
  • <stdio.h> : 표준 입출력 라이브러리(Standard Input Output). scanf()printf()같은 함수가 정의되어 있다.
  • C 프로그램은 항상 main 함수에서 시작한다.
  • system() 함수를 사용해서 시스템 정의 기능을 직접 사용할 수 있다.
    void main(void) {
        printf("HELLO WORLD");
        system("pause")
        return 0;
    }

 

변수

  • 자료형 변수명 = 값; : 변수 선언 후 동시에 값 할당
  • 자료형 변수명; : 변수를 선언만 함. 해당 주소에는 쓰레기 값이 저장된다.
    int a = 10;
    iut b;

 

자료형

  • int : 정수(4byte). 약 +- 20억 범위의 수 표현
  • long long : 더 큰 정수(8byte). 약 +- 수천억 범위의 수 표현
  • float : 실수(4byte)
  • double : 실수(8byte). 부동소수점?
  • string : 문자열(unspecified)
  • bool : 참/거짓 (1bit)
  • char : 문자 1개(1byte)

 

정수표현

  • 2진법으로 표현.
    • e.g. 9(10) = 00001001(2)
  • 음수 표현 : 맨 앞 1bit를 부호 비트로 사용(0이면 양수, 1이면 음수)
    • e.g. -9(10) = 10001001(2)
  • 빼기 연산 : 부호 비트를 사용한 음수는 계산 효율이 좋지 않음. 2의 보수를 더해서 빼기연산이 실행됨
    • 2의 보수 = 1의 보수(모든 bit에 not연산) + 1
    • 어떤 수 n에 n의 2의 보수를 더한다. 이때, 전체 자릿수를 벗어나는 올림수는 버린다.
    • e.g. 9(10) - 9(10) = 00001001(2) + 11110111(2) = 00000000(2) = 0(10)

 

실수 표현

  • 전체 비트를 부호, 지수, 유효숫자 영역으로 나눠서 표현한다.

 

입출력

 

입력

  • scanf : 취약한 함수여서 visual studo ide에서는 compile error 발생. _CRT_SECURE_NO_WARNINGS flag를 선언해야 한다.
  • #define _CRT_SECURE_NO_WARNINGS #inclue <stdio.h> void main(void) { return 0; }
  • 주소 연산자(&)를 사용해서 변수의 주소로 접근하여 특정 주소에 입력한 값을 바로 기록한다.
  • int a; scanf("%d", &a);

 

출력

  • `printf 사용
    int a;
    scanf("%d", &a);
    printf("%d", a);

 

자료형

  • int : %d
    • 정수부 자리수 지정 : %1d : 1자리 정수만 입출력
    • e.g. 578 → scanf("%1d%1d%1d", &a, &b, &c) → a: 5, b: 7, c:8
  • long long : %lld
  • double : 입력 %lf, 출력 %f
    • 입력할 때는 특정 주소에 값을 바로 기록하므로 크기를 정확히 명시해야 하지만, 출력은 값 자체를 의미하므로 정확한 크기를 사용하지 않아도 된다?
    • 소수점 자리수 지정 : %.2f : 소수점 두 자리까지만 출력(3자리 째에서 반올림)
  • float : %f
  • stirng : %s
    • "A" : 문자열 A
  • char : %c
    • 'A' : 문자 A

%같은 기호를 문자열로 표현하고 싶을 때는 %를 한번 더 사용한다. e.g. printf("%%") → % 출력

 

연산자

  • 대입연산자 : =
  • 산술연산자 : +, -, *, /, %(modular)
  • 관계연산자 : <, <=, >, >=, ==
  • 논리연산자 : ||, &&, !
  • 비트연산자 : ~, &, |, <<(shift left), >>(shift right)
  • 증감연산자 : ++, -
  • 삼항연산자 : a ? b : c
  • Escape Sequence
    • \n : 개행
    • \t : 탭
    • \\ : 백슬래시()
    • \" : 큰따옴표
    • \b : 백스페이스

 

연산자 우선순위

  1. ++, --
  2. !, ~
  3. *, /, %
  4. +, -
  5. <<, >>
  6. <, <=, >, >=
  7. ==, !=
  8. 비트, 논리, 삼항 연산자
  9. 삼항 연산자
TAG
댓글
댓글쓰기 폼