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 상수명 상수