SECTION 001 데이터 타입
1. 데이터 타입
- 데이터 타입 (Data Type) : 변수 (Variable) 에 저장될 데이터의 형식
유형 | 기능 | 예 |
---|---|---|
정수 타입 (Integer Type) |
정수, 즉 소수점이 없는 숫자를 저장 | 1, -1, 10, -100 |
부동 소수점 타입 (Floating Point Type) |
소수점 이하가 있는 실수를 저장 | 0.123×10², -1.6×2³ |
문자 타입 (Character Type) |
- 한 개의 문자를 저장 - 작은따옴표(‘’) 안에 표시한다. |
‘A’, ‘a’, ‘1’, ‘*’ |
문자열 타입 (Character String Type) |
- 문자열을 저장 - 큰따옴표(“”) 안에 표시한다. |
“Hello”, “1+2=3” |
불린 타입 (Boolean Type) |
- 조건의 참(True), 거짓(False) 여부를 판단하여 저장 - 기본값은 False 이다. |
true, false |
배열 타입 (Array Type) |
- 같은 타입의 데이터 집합을 저장 - 데이터는 중괄호 { } 안에 콤마(,)로 구분하여 값을 나열한다. |
{1,2,3,4,5} |
2. C/C++ 의 데이터 타입 크기 및 기억 범위
1) 문자
데이터 타입 | 크기 | 기억 범위 |
---|---|---|
char | 1 Byte | -128 ~ 127 |
2) 부호없는 문자형
데이터 타입 | 크기 | 기억 범위 |
---|---|---|
unsigned char | 1 Byte | 0 ~ 255 |
3) 정수
데이터 타입 | 크기 | 기억 범위 |
---|---|---|
short | 2 Byte | -32,768 ~ 32,767 |
int | 4 Byte | -2,147,483,648 ~ 2,147,483,647 |
long | 4 Byte | -2,147,483,648 ~ 2,147,483,647 |
long long | 8 Byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
4) 부호없는 정수형
데이터 타입 | 크기 | 기억 범위 |
---|---|---|
unsigned short | 2 Byte | 0 ~ 65,535 |
unsigned int | 4 Byte | 0 ~ 4,294,967,295 |
unsigned long | 4 Byte | 0 ~ 4,294,967,295 |
5) 실수
데이터 타입 | 크기 | 기억 범위 |
---|---|---|
float | 4 Byte | 1.2×10^-38 ~ 3.4×10^38 |
double | 8 Byte | 2.2×10^-308 ~ 1.8×10^308 |
long double | 8 Byte | 2.2×10^-308 ~ 1.8×10^308 |
- 운영체제에 따라 데이터 타입의 크기가 다르다.
– Window (64bit) : long - 4 Byte, long double - 8 Byte
– Linux (64bit) : long - 8 Byte, long double - 16 Byte
3. JAVA 의 데이터 타입 크기 및 기억 범위
1) 문자
데이터 타입 | 크기 | 기억 범위 |
---|---|---|
char | 2 Byte | 0 ~ 65,535 |
2) 정수
데이터 타입 | 크기 | 기억 범위 |
---|---|---|
byte | 1 Byte | -128 ~ 127 |
short | 2 Byte | -32,768 ~ 32,767 |
int | 4 Byte | -2,147,483,648 ~ 2,147,483,647 |
long | 8 Byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
3) 실수
데이터 타입 | 크기 | 기억 범위 |
---|---|---|
float | 4 Byte | 1.4×10^-45 ~ 3.4×10^38 |
double | 8 Byte | 4.9×10^-324 ~ 1.8×10^308 |
4) 논리
데이터 타입 | 크기 | 기억 범위 |
---|---|---|
boolean | 1 Byte | true 또는 false |
4. Python 의 데이터 타입 크기 및 기억 범위
종류 | 데이터 타입 | 크기 | 기억 범위 |
---|---|---|---|
문자 | str | 무제한 | 무제한 |
정수 | int | 무제한 | 무제한 |
실수 | float | 8 Byte | 4.9×10^-324 ~ 1.8×10^308 |
복소수 | complex | 16 Byte | 4.9×10^-324 ~ 1.8×10^308 |
- 크기 및 기억 범위의 ‘무제한’ 은 프로그램 메모리의 한계까지 얼마든지 저장할 수 있음을 의미한다.
- complex (복소수) 는 실수(8 Byte) 와 허수(8 Byte) 의 합으로 이루어진 숫자 표현이다.
SECTION 002 변수
1. 변수의 개요
- 변수 (Variable) : 컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간으로, 변할 수 있는 값을 의미한다.
– 저장하는 값에 따라 정수형, 실수형, 문자형, 포인터형 등으로 구분한다.
2. 변수명 작성 규칙
- 영문자, 숫자, _ (under bar) 를 사용할 수 있다.
- 첫 글자는 영문자나 _ (under bar) 로 시작해야 하며, 숫자는 올 수 없다.
- 글자 수에 제한이 없다.
- 공백이나 특수문자를 사용할 수 없다.
- 대/소문자를 구분한다.
- 예약어를 변수명으로 사용할 수 없다.
- 변수 선언 시 문장 끝에 반드시 세미콜론(;)을 붙여야 한다.
3. 기억 클래스
- 변수 선언 시 메모리 내에 변수의 값을 저장하기 위한 기억영역이 할당되는데, 할당되는 기억영역에 따라 사용 범위에 제한이 있다.
– 이러한 기억영역을 결정하는 작업을 기억 클래스 (Storage Class) 라 한다.
– C언어에서는 다음과 같이 5가지 종류의 기억 클래스를 제공한다.
종류 | 기억영역 | 예약어 | 생존기간 | 사용 범위 |
---|---|---|---|---|
자동 변수 | 메모리(스택) | auto | 일시적 | 지역적 |
레지스터 변수 | 레지스터 | register | 일시적 | 지역적 |
정적 변수 (내부) | 메모리(데이터) | static | 영구적 | 지역적 |
정적 변수 (외부) | 메모리(데이터) | static | 영구적 | 전역적 |
외부 변수 | 메모리(데이터) | extern | 영구적 | 전역적 |
– auto 는 기본값으로 생략이 가능하다.
1) 자동 변수 (Automatic Variable)
- 자동 변수 : 함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수
– 함수나 블록이 실행되는 동안에만 존재하며, 이를 벗어나면 자동으로 소멸된다.
– 초기화하지 않으면 쓰레기값 (Garbage Value) 이 저장된다.
2) 외부 변수 (External Variable)
- 외부 변수 : 현재 파일이나 다른 파일에서 선언된 변수나 함수를 참조 (reference) 하기 위한 변수
– 외부 변수는 함수 밖에서 선언한다.
– 함수가 종료된 뒤에도 값이 소멸되지 않는다.
– 초기화하지 않으면 자동으로 0 으로 초기화 된다.
– 다른 파일에서 선언된 변수를 참조할 경우 초기화 할 수 없다.
3) 정적 변수 (Static Variable)
- 내부 정적 변수 : 함수나 블록 내에서 선언하고, 선언한 함수나 블록 내에서만 사용할 수 있다.
- 외부 정적 변수 : 함수 외부에서 선언하고, 모든 함수에서 사용할 수 있다.
– 두 변수 모두 함수나 블록이 종료된 뒤에도 값이 소멸되지 않는다.
– 초기화는 변수 선언 시 한 번만 할 수 있으며, 초기화를 생략하면 자동으로 0 으로 초기화 된다.
4) 레지스터 변수 (Register Variable)
- 레지스터 변수 : 메모리가 아닌 CPU 내부의 레지스터에 기억영역을 할당받는 변수
– 자주 사용되는 변수를 레지스터에 저장하여 처리 속도를 높이기 위해 사용한다.
– 함수나 블록이 실행되는 동안에만 존재하며, 이를 벗어나면 자동으로 소멸된다.
– 레지스터의 사용 개수는 한정되어 있어, 데이터를 저장할 레지스터가 없는 경우 자동 변수로 취급되어 메모리에 할당된다.
– CPU 에 저장되어 메모리 주소를 가질 수 없기 때문에 변수의 주소를 구하는 주소 연산자 (&) 를 사용할 수 없다.
4. 변수의 선언
자료형 변수명 = 값;
– 자료형 : 변수에 저장될 자료의 형식을 지정한다.
– 변수명 : 사용자가 원하는 이름을 임의로 지정한다. 단, 변수명 작성 규칙에 맞게 지정해야 한다.
– 값 : 변수를 선언하면서 초기화할 값을 지정한다. 단, 값은 지정하지 않아도 된다.
- 실수형 상수 입력 방법
– 실수형 상수는 기본적으로 double 형으로 인식되기 때문에 double 형은 실수를 그냥 입력하고, float 형은 실수 뒤에 “f” 또는 “F” 를, long doule 형으로 입력하려면 실수 뒤어 “l” 또는 “L” 을 붙여 입력해야 한다.
SECTION 003 데이터 입출력
1. C언어의 표준 입출력 함수의 개요
- 표준 입출력 함수 (Input-Output Functions) 란, 키보드로 입력받아 화면으로 출력할 때 사용하는 함수로, 대표적으로 scanf(), getchar(), gets(), printf(), putchar(), puts() 등이 있다.
2. scanf() 함수
- scanf() 함수는 C언어의 표준 입력 함수로, 키보드로 입력받아 변수에 저장하는 함수이다.
1) 형식
scanf(서식 문자열, 변수의 주소)
– 서식 문자열 : 입력받을 데이터의 자료형을 지정한다.
– 변수의 주소 : 데이터를 입력받을 변수를 적는다. 변수의 주소로 입력받아야 하기 때문에 변수에 주소연산자 ‘&’ 를 붙인다.
2) 특징
- 입력받을 데이터의 자료형, 자릿수 등을 지정할 수 있다.
- 한 번에 여러 개의 데이터를 입력 받을 수 있다.
- 서식 문자열과 변수의 자료형은 일치해야 한다.
3) 서식 문자열
서식 문자열 | 의미 |
---|---|
%d | 정수형 10진수 |
%u | 부호없는 정수형 10진수 |
%o | 정수형 8진수 |
%x | 정수형 16진수 |
%c | 문자 |
%s | 문자열 |
%f | 소수점을 포함하는 실수 |
%e | 지수형 실수 |
%ld | long 형 10진수 |
%lo | long 형 8진수 |
%lx | long 형 16진수 |
%p | 주소 16진수 |
– printf() 함수에도 동일하게 적용된다.
- JAVA 의 Scanner 클래스의 입력 메소드
next() | 입력값을 문자열로 변환 |
nextLine() | 입력받은 라인 전체를 문자열로 반환 |
nextInt() | 입력값을 정수형으로 반환 |
nextFloat() | 입력값을 실수형으로 반환 |
3. printf() 함수
- printf() 함수는 C언어의 표준 출력 함수로, 인수로 주어진 값을 화면에 출력하는 함수이다.
1) 형식
printf(서식 문자열, 변수)
– 서식 문자열 : 변수의 자료형에 맞는 서식 문자열을 입력한다.
– 변수 : 서식 문자열의 순서에 맞게 출력할 변수를 적는다. scanf() 와 달리 주소연산자 ‘&’ 를 붙이지 않는다.
2) 주요 제어문자
문자 | 의미 | 기능 |
---|---|---|
\n | new line | 커서를 다음 줄 앞으로 이동한다. |
\b | backspace | 커서를 왼쪽으로 한 칸 이동한다. |
\t | tab | 커서를 일정 간격 띄운다. |
\r | carriage return | 커서를 현재 줄의 처음으로 이동한다. |
\0 | null | null 문자를 출력한다. |
\’ | single quote | 작은따옴표를 출력한다. |
\” | double quote | 큰따옴표를 출력한다. |
\a | alert | 스피커로 벨 소리를 출력한다. |
\\ | backslash | 역 슬래시를 출력한다. |
\f | form feed | 한 페이지를 넘긴다. |
※ 출력 서식 문자열
예제 1) 2543
서식문자열 | 정렬방향 | 출력자릿수 | 자료형 | 출력결과 |
---|---|---|---|---|
“%3d” | 3 | d | 2543 | |
오른쪽 정렬 | 전체 3자리로 지정, 자릿수를 초과하는 경우 전체 출력 |
정수형 | ||
“%6d” | 6 | d | __2543 | |
오른쪽 정렬 | 전체 6자리로 지정 | 정수형 | ||
”%-6d” | - | 6 | d | 2543__ |
왼쪽 정렬 | 전체 6자리로 지정 | 정수형 | ||
“%06d” | 06 | d | 002543 | |
오른쪽 정렬 | 전체 6자리로 지정 왼쪽 공백은 0으로 채워 출력 |
정수형 |
예제 2) 245.555
서식문자열 | 정렬방향 | 출력자릿수 | 자료형 | 출력결과 |
---|---|---|---|---|
“%8.2f” | 8.2 | f | __245.26 | |
오른쪽 정렬 | 전체 8자리로 지정 소수점 이하는 2자리만 출력 (소수점 3자리에서 반올림) |
실수형 | ||
”%-8.2f” | - | 8.2 | f | 245.26__ |
왼쪽 정렬 | 전체 8자리로 지정 소수점 이하는 2자리만 출력 (소수점 3자리에서 반올림) |
실수형 | ||
”%.3f” | .3 | f | 245.256 | |
오른쪽 정렬 | 정수 부분 모두 출력 소수점 이하는 3자리만 출력 (소수점 4자리에서 반올림) |
실수형 |
예제 3) “help me”
서식문자열 | 정렬방향 | 출력자릿수 | 자료형 | 출력결과 |
---|---|---|---|---|
”%.3s” | .3 | s | “hel” | |
오른쪽 정렬 | 3글자만 출력 | 문자열 | ||
“%3s” | 3 | s | “help me” | |
오른쪽 정렬 | 전체 3자리로 지정, 자릿수를 초과하는 경우 전체 출력 |
문자열 | ||
“%8.6s” | 8.6 | s | “__help m” | |
오른쪽 정렬 | 전체 8자리로 지정 6글자만 출력 |
문자열 | ||
”%-8.6s” | - | 8.6 | s | “help m__” |
왼쪽 정렬 | 전체 8자리로 지정 6글자만 출력 |
문자열 |
예제 4) 123.45E-1
서식문자열 | 자료형 | 설명 | 출력결과 |
---|---|---|---|
“%f” | 실수형 변환 | 소수점 자리수를 -1, 즉 왼쪽으로 1자리 이동 소수점 자리는 기본적으로 6자리로 표현 |
12.345000 |
“%e” | 지수형 정규화 | 정수 부분은 한 자리 남기고, 소수점 자리 이동 | 1.234500E+01 |
▷ 지수형의 정규화 예제
예제 | 실수형 변환 | 정규화 |
---|---|---|
25.43 | 25.430000 | 2.543000e+01 |
3141.592e-1 | 3141.592×10^-1 = 314.159200 |
3.141592e+02 |
3.483e-2 | 0.034830 |
4. 기타 표준 입출력 함수
1) 입력
getchar() | 키보드로 한 문자를 입력받아 변수에 저장하는 함수 |
gets() | 키보드로 문자열을 입력받아 변수에 저장하는 함수 Enter 를 누르기 전까지 하나의 문자열로 인식하여 저장 |
2) 출력
putchar() | 인수로 주어진 한 문자를 화면에 출력하는 함수 |
puts() | 인수로 주어진 문자열을 화면에 출력한 후 커서를 자동으로 다음 줄 앞으로 이동하는 함수 |