2024. 12.10. 월요일

1. 변수

: 값을 담아두는 기억공간

: 값을 저장하고 참조할 수 있는 할당된 메모리 공간

자료형
크기
값의 표현범위
정수형
char
1byte
-128 이상 +127 이하
short
2byte
-32,768 이상 +32,767 이하
int
4byte
-2,147,483,648 이상 +2,147,483,647 이하
long
4byte
-2,147,483,648 이상 +2,147,483,647 이하
long long
8byte
-9,223,372,036,854,775,807 이상
+9,223,372,036,854,775,807 이하
실수형
float
4byte
± 3.4*10^(- 37) 이상 ± 3.4*10^ 38 이하
double
8byte
± 3.4*10^(- 307) 이상 ± 3.4*10^ 308 이하
long double
8byte 이상
double 이상의 표현범위

이처럼 자료형이 여러개 존재하는 이유는 데이터 표현방식이 다르고, 효율적인 메모리 공간 활용을 위함이고,

자료형의 크기가 클수록 값의 표현범위도 함께 커진다.

+ 부호의 유무에 따라 부호가 있는 변수(signed)와 부호가 없는 변수(unsigned)로 나뉜다.

기본 (default) 자료형은 모두 부호가 있는(signed)자료형이며,

양의 표현범위를 더 늘리기 위해 unsigned 키워드를 붙일 수 있다. (실수에는 불가능)

>> int에 unsigned 를 붙이면 0이상 4,294,967,295이하의 수를 표현 가능함.(값의 표현범위가 2배!)

2. 상수

: 고정되어있는 수

: 메모리 공간에 저장되어있으나 변경할 수 없다.

Literal constant
이름을 지니지 않는 상수
int num = 1+2; (← 1, 2)
const int A = 3; (← 3)
Symbolic contant
이름을 지니는 상수
const int A = 4; (← A)
대문자로 표기
둘 이상의 단어를 함께 붂을 때는 언더바( _ )로 단어를 이어서 짓기

상수를 표현하고 싶다! → const를 앞에 붙이기 ; 이게 붙으면 변수에 저장된 값이 변경X

(한번 초기화 된 값은 변경 X, 초기화 값을 지정해주지 않아도 쓰레기 값으로 초기화되어 선언 이후로부터 변경 불가능)

접미사
자료형
"숫자 + 접미사"로
u 혹은 U
unsigned int
값을 표기하면 컴파일러가
그 크기와 형태를 보고 적당한 자료형을 선택함
float f1 = 3.14;
로 작성하면컴파일 과정에서 이런 경고 메시지가 나옴
warning C4305: '초기화 중' : 'double'에서 'float'(으)로 잘립니다.
3.14는 8바이트 double형 상수로 생각하며,
이 값을 저장하는 변수는 4바이트 float형이기 때문에 값이 잘려나갈수 있음을 경고한 것.
이때는 3.14f와 같이 f 접미사를 붙여 float형 상수로 자료형을 변경시킬 수 있다.
(3.14가 float형으로 충분히 표현할 수 있음에도 불구하고, 따로 f 를 붙여주어야 하는 이유는
부동소수형 상수, 즉 실수는 기본적으로 double형이라고 간주해버리기 때문)
l 혹은 L
long
ul 혹은 UL
unsigned long
f 혹은 F
float
l 혹은 L
long double

3. 지역변수와 전역변수

지역변수 (local variable) : 선언지역을 벗어나면 기억 공간에서 자동으로 소멸. (;; 자동변수 - auto)

지역(local) : { 글자 } ;; 이게 하나의 지역

전역변수 (global variable): 영역 외부에 선언된 변수. 자신이 선언되어 있는 내부의 어떤 함수에서든 접근이 가능함. 블럭 밖에서의 선언.

4. 정적 변수와 외부 변수

정적변수 (static variable) :영역을 벗어나도 값을 그대로 유지하며 메모리 공간에서도 소멸X

= 한 번 선언하고 나면 계속 유지됨.

외부 변수(extern variable) : 모듈별 분할 컴파일에 사용됨. 소스밖에서도 사용 가능.

= 함수 밖에서 선언되었다면 어느 곳에서라도 사용 가능한 전역 변수

= 선언 이전에 나온 함수에서는 참조 불가능. 정적변수처럼 자동으로 0으로 초기화

5. 이스케이프 시퀀스 (Escape sequence)

: 특수한 기능을 하는 문자

: 이스케이프 시퀀스와 그 기능은 아래와 같다.

/a
경고음
/b
백스페이스(backspace)
/f
폼 피드(form feed)
/n
개 행(new line)
/r
캐리지 리턴(carriage return)
/t
수평 탭
/v
수직 탭
/'
작은 따옴표 출력
/"
큰 따옴표 출력
\\
역슬래시 출력
/ooo
아스키 문자 8진수 표시
/xhhh
아스키 문자 16진수 표시

: 서식문자와 출력형태는 아래와 같다.

%c
단일 문자
%d
부호 있는 10진 정수
%s
문자열
%i
%%
% 기호 출력
%f
%o
부호 없는 8진 정수
%x
부호 없는 16진 정수, 소문자 사용
%u
부호 없는 10진 정수
%X
부호 없는 16진 정수, 대문자 사용
%g
값에 따라서 %f, %e 둘 중 하나를 선택
%e
e 표기법에 의한 실수
%G
값에 따라서 %f, %E 둘 중 하나를 선택
%E
E 표기법에 의한 실수

: 포맷 코드의 기능 아래와 같다.

%8d
우측 기준 8자리 출력
%-8d
좌측 기준 8자리 출력
%+8d
수치 앞에 부호 출력
%08d
수치 앞에 공백을 0으로 채움
%+08d
부호 붙이고 공백을 0으로 채움
%8.3f
전체 8자리, 소수 3자리 출력
%-8.3f
좌측을 기준으로 전체 8자리,
소수 3자리 출력
%+8.3f
수치 앞에 부호 출력
%08.3f
수치 앞에 공백을 0으로 채움
%+08.3f
부호 붙이고 공백을 0으로 채움

(위의 포맷 코드는 예일 뿐이고, 굳이 8.3이라던가, 8이 아니더라도 괜찮.

6. 함수 (Function)란

: 특정한 작업을 수행하는 or 서로 관련있는 코드들의 모임. 하나의 단위

= module

프로그램은 함수로 구성되어있고, 그 함수들이 순차적으로 실행됨으로 프로그램이 정상 작동함.

--> 함수; 프로그램을 구성하는 부품으로 독립적인 기능을 지님.

<데이터타입(변환할 데이터의 형태)> 함수명(앞으로 호출할 이 함수의 이름) (매개변수1, 매개변수2 .....)
{
	함수본체;
}

7. 전처리기

: 컴파일 이전에 미리 처리되는 문장(선행처리)

1. #include <c~>

: ~의 내용이 소스에 포함되게 함.

표준 헤더파일을 포함시킬 때는 < >

사용자가 직접 작성한 헤더를 포함시킬 때는 ""를 사용.

= 같은 폴더 내에 있는 헤더파일을 먼저 찾고, 찾지 못할 경우 다른 폴더도 탐색 + 헤더파일의 이름 뿐 아니라 절대경로*도 지정 가능

*절대경로 예시 ) #include "C:\Study\header1.h"

2. #define

: 함수 혹은 상수를 단순화하거나, 어느 특정한 상수에 이름을 붙여줌으로써 가독성을 증가시키는 등 장점을 보임.

#define 상수명 상수

'C++' 카테고리의 다른 글

배열  (0) 2025.06.17
제어문, 반복문  (0) 2025.06.17
C++로 다항식 덧셈 구현하기  (0) 2025.06.15
카데인 알고리즘  (0) 2025.06.15
C++ 간단 정리  (0) 2025.06.12

+ Recent posts