데이터 타입, 변수와 연산자의 이해
데이터 타입 정의
변수에 저장될 데이터의 형식
- 컴퓨터는 데이터를 메모리에 저장
- 저장할 데이터 타입을 지정
데이터 타입
-
정수형
-
정수를 저장
-
정수는 이진수로 저장
-
음수는 양수의
2의 보수
로 나타냄- 2의 보수
- 양의 정수로 바꿈
- 모든 비 트를 바꿈
- 1을 더함
- 마이너스 무시하고 정수 2진수 변환 -5 → 5
- 1의 보수변환 0101 → 1010
- 변환한 보수 +1 1010 + 0001 = 1011
- 2의 보수
-
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++의 데이터 타입 및 기억범위
종류 | 타입 | 크기 |
---|---|---|
문자형 | char | 1바이트 |
부호없는 문자형 | unsigned char | 1바이트 |
정수형 | short | 2바이트 |
int | 4바이트 | |
long | 4바이트 | |
long long | 8바이트 | |
부호 없는 정수형 | unsigned short | 2바이트 |
unsigned int | 4바이트 | |
unsigned long | 4바이트 | |
실수형 | float | 4바이트 |
double | 8바이트 | |
long double | 8바이트 |
연산자의 개념과 종류
- 개념 : 다양한 식과 값에 수학 및 논리적인 움직임을 지시하는 것
- 종류
- 산술 연산자
+
-
*
/
%
- 논리 연산자
&&
||
- 관계 연산자
>
,≥
<
,≤
==
!=
- 시프트 연산자
<<
>>
- 비트 연산자
&
|
^
- 산술 연산자
변수
-
개념
- 프로그래밍에 사용되는 데이터를 기억하는 기억장소의 이름
- 데이터의 생성, 중간결과 및 처리결과를 기억함
-
작성
- 열문자(대, 소문자), 숫자, 제한된 특수 문자로 구성
- 첫 글자는 반드시 영문, 제한된 특수문자 사용
- 예약어는 사용이 불가
- 변수명 내의 공백 불가
-
종류
- 데이터 종류에 따른 분류 정수, 실수, 문자 등
- 기억장소의 형태에 따른 분류
단순변수 : 한 개에 하나의 데이터만 저장 첨자 변수 : 한 개의 변수에 여러 개의 데이터 저장
-
바인딩
- 변수와 변수에 관련된 다양한 속성을 연결하는 과정
정적 바인딩 : 프로그램 실행 시간 전에 연결 동적 바인딩 : 프로그램 실행 시간에 연결
- 변수가 메모리로 로딩 등 프로그램이 실제 실행 가능한 상태로 변환되는 것
언어정의시간 : 언어의 정의 -> int test; (자료구조를 확정) 언어구현시간 : 언어에 대한 번역기 구현 -> int 의 범위 등 번역시간 : 원시프로그램 번역 -> int test(test에 int형을 바인딩) 링크시간 : 프로그램을 라이브러리와 링크 -> 라이브러리 부 프로그램 호출 적재시간 : 프로그램 실행을 위하여 메모리로 적재 -> 전역변수에 메모리 주소 바인딩 등 실행시간 : 프로그램 싫행 -> test = 10
- 변수와 변수에 관련된 다양한 속성을 연결하는 과정
-
선언
-
변수에 이름, 속성을 부여하는 것
-
명시적 : 속성과 이름 부여 (말해줘)
int test
속성 이름 -
묵시적 : I ~ N으로 시작하면 정수타입, 그렇지 않으면 실수타입 (말안해도 알아)
I, J, K...
-
-
-
할당(Allocation)
- 변수에 메모리 공간을 바인딩 하는 작업
기억장소 할당 : 메모리 공간 바인딩 기억장소 회수 : 바인딩이 해제된 메모리 공간을 가용공간으로 회수하는 과정 수명 : 변수가 특정 메모리 공간에 바인딩 되어있는 시간
구분 | 할당 시간 | 사례 |
---|---|---|
정적할당 | 프로그램 실행 종료까지 유지 | 전역변수, static |
스택기반 할당 | 함수 종료까지 유지 | 지역 변수 |
동적할당 | Free 시 까지 유지 | malloc: 포인터로 참조 가능 |