본문으로 건너뛰기

데이터 타입, 변수와 연산자의 이해

데이터 타입 정의

변수에 저장될 데이터의 형식

  • 컴퓨터는 데이터를 메모리에 저장
  • 저장할 데이터 타입을 지정

데이터 타입

  • 정수형

    • 정수를 저장

    • 정수는 이진수로 저장

    • 음수는 양수의 2의 보수로 나타냄

      • 2의 보수
        • 양의 정수로 바꿈
        • 모든 비트를 바꿈
        • 1을 더함
      1. 마이너스 무시하고 정수 2진수 변환 -5 → 5
      2. 1의 보수변환 0101 → 1010
      3. 변환한 보수 +1 1010 + 0001 = 1011
    • 10진법 (0~9)

    • 2진법 (0, 1)

    • 8진법 (0~7)

    • 16진법 (0~15)

  • 실수형

    • 부동소수점 표현
      • -11.625
  • 문자(Character)형

    • 한 문자를 저장할 때 사용함
    • 작은 따옴표(’ ’) 안에 표시함
    • 대표적인 문자 코드로 ASCII 코드가 있음
  • 불리안(Boolean)형

    • 논리 자료형이라고도 함
    • 참과 거짓의 여부를 판단하여 저장할 때 사용
    • 주로 0은 거짓으로 지정되어 있고, 0이 아닌 경우 모두 참임
    • 숫자를 쓰지 않고 true false 를 쓰기도 함
  • 배열(Character String)형

    • 문자열을 저장할 때 사용함
    • 큰 따옴표(” “) 안에 표시함

C/C++의 데이터 타입 및 기억범위

종류타입크기
문자형char1바이트
부호없는 문자형unsigned char1바이트
정수형short2바이트
int4바이트
long4바이트
long long8바이트
부호 없는 정수형unsigned short2바이트
unsigned int4바이트
unsigned long4바이트
실수형float4바이트
double8바이트
long double8바이트

연산자의 개념과 종류

  • 개념 : 다양한 식과 값에 수학 및 논리적인 움직임을 지시하는 것
  • 종류
    • 산술 연산자
      • +
      • -
      • *
      • /
      • %
    • 논리 연산자
      • &&
      • ||
    • 관계 연산자
      • >,
      • <,
      • ==
      • !=
    • 시프트 연산자
      • <<
      • >>
    • 비트 연산자
      • &
      • |
      • ^

변수

  1. 개념

    • 프로그래밍에 사용되는 데이터를 기억하는 기억장소의 이름
    • 데이터의 생성, 중간결과 및 처리결과를 기억함
  2. 작성

    • 열문자(대, 소문자), 숫자, 제한된 특수 문자로 구성
    • 첫 글자는 반드시 영문, 제한된 특수문자 사용
    • 예약어는 사용이 불가
    • 변수명 내의 공백 불가
  3. 종류

    • 데이터 종류에 따른 분류 정수, 실수, 문자 등
    • 기억장소의 형태에 따른 분류

      단순변수 : 한 개에 하나의 데이터만 저장 첨자 변수 : 한 개의 변수에 여러 개의 데이터 저장

  4. 바인딩

    • 변수와 변수에 관련된 다양한 속성을 연결하는 과정

      정적 바인딩 : 프로그램 실행 시간 전에 연결 동적 바인딩 : 프로그램 실행 시간에 연결

    • 변수가 메모리로 로딩 등 프로그램이 실제 실행 가능한 상태로 변환되는 것

      언어정의시간 : 언어의 정의 -> int test; (자료구조를 확정) 언어구현시간 : 언어에 대한 번역기 구현 -> int 의 범위 등 번역시간 : 원시프로그램 번역 -> int test(test에 int형을 바인딩) 링크시간 : 프로그램을 라이브러리와 링크 -> 라이브러리 부 프로그램 호출 적재시간 : 프로그램 실행을 위하여 메모리로 적재 -> 전역변수에 메모리 주소 바인딩 등 실행시간 : 프로그램 싫행 -> test = 10

  5. 선언

    • 변수에 이름, 속성을 부여하는 것

      • 명시적 : 속성과 이름 부여 (말해줘)

        int test
        속성 이름
      • 묵시적 : I ~ N으로 시작하면 정수타입, 그렇지 않으면 실수타입 (말안해도 알아)

        I, J, K...
  6. 할당(Allocation)

    • 변수에 메모리 공간을 바인딩 하는 작업

기억장소 할당 : 메모리 공간 바인딩 기억장소 회수 : 바인딩이 해제된 메모리 공간을 가용공간으로 회수하는 과정 수명 : 변수가 특정 메모리 공간에 바인딩 되어있는 시간

구분할당 시간사례
정적할당프로그램 실행 종료까지 유지전역변수, static
스택기반 할당함수 종료까지 유지지역 변수
동적할당Free 시 까지 유지malloc: 포인터로 참조 가능