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() 인수로 주어진 문자열을 화면에 출력한 후 커서를 자동으로 다음 줄 앞으로 이동하는 함수