기존에 운영중이던 깃허브 페이지의 자료를 이전하였습니다.
변수와 자료형
- 아래 코드는 변수와 자료형이 모두 나타난 코드이다.
#include <stdio.h>
int main()
{
int a = 1;
float b = 2.3;
char c = 'A';
double sum;
sum = a + b + c;
return 0;
}
변수
- 자료형과 이름으로 이루어진다.
자료형 변수이름;
의 형태가 기본이며, 변수의 선언과 동시에 값을 초기화 하려면 자료형 변수이름 = 값;
의 형태를 이용할 수 있다.
- 위의 코드에서 a, b, sum이 변수라고 할 수 있다.
- a와 b는 선언과 동시에 초기화가 되었다.
- sum은
a + b
한 결과를 갖도록하는 구문으로 코드의 마지막에 값이 할당된다.
- 변수의 값은 원하는대로 바꿀 수 있다.
- 변수를 이용하여 프로그램에서 같은 계산을 여러 번 하거나, 중간값을 따로 저장하여 연산에 효율성을 높일 수 있다.
변수의 네이밍 방법
- 카멜 표기법
- 낙타의 혹을 닮았다 하여 붙여진 이름이다.
- 여러 개의 단어가 연결될 때, 첫 단어를 제외한 단어의 첫 문자를 대문자로 표기한다.
- 예 : minsuJoDevelopmentLog
- 파스칼 표기법
- 모든 단어의 첫 문자를 대문자로 표기한다.
- 예 : MinsuJoDevelopmentLog
- 스네이크 표기법
- 구불구불 길게 연결된 모습이 뱀과 닮았다 하여 붙여진 이름이다.
- 여러 개의 단어가 연결될 때, 모든 단어는 소문자를 이용하며 연결 부위에 '_'를 이용한다.
- 예 : minsu_jo_development_log
- 헝가리안 표기법
- 접두어에 자료형을 붙이는 표기법이다.
- 예 : strMinsuJoDevelopmentLog
변수의 네이밍 규칙
- 알파벳, 숫자, 밑줄문자 '_'로 구성한다.
- 첫번째 문자는 반드시 알파벳 또는 밑줄문자로 구성한다.
- 대문자와 소문자를 구별한다.
- 예약어(키워드)와 똑같은 이름은 허용되지 않는다.
- 예약어 : 고유한 의미를 가지고 있는 특별한 단어이다.
- auto, double, break, else, case, enum, char, extern, const, float, continue, for, default, goto, do, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while 등이 있다.
변수의 선언 위치
자료형
- 자료형이란 쉽게 말하면 아래와 같다.
- 초등학교에는 8
13세의 아이들이, 중학교에는 1416세의 아이들이 다닌다.
- 초등학교에는 중학생이, 중학교에는 초등학생이 다닐 수 없다.
- 즉, 자료형마다 저장할 수 있는 값의 종류나 범위가 다르며, 다른 자료형 끼리는 연산이 불가능하다.
- 자료형의 크기는
sizeof(자료형 or 변수 or 값)
을 이용하여 알 수 있다.
자료형의 종류
자료형 |
설명 |
차지하는 저장 공간 (Byte) |
값의 표현 범위 |
정수형 |
부호있음 |
short |
표현범위가 작은 정수 |
2 |
-215 ~ 215 - 1 |
int |
일반적인 표현범위의 정수 |
4 |
-231 ~ 231 - 1 |
long |
표현범위가 큰 정수 |
4 or 8 |
-231 ~ 231 - 1 |
부호없음 |
unsigned short |
부호가 없는 short형 정수 |
2 |
0 ~ 216 - 1 |
unsigned int |
부호가 없는 int형 정수 |
4 |
0 ~ 232 - 1 |
unsigned long |
부호가 없는 long형 정수 |
4 or 8 |
0 ~ 232 - 1 |
문자형 |
부호있음 |
char |
문자 및 정수 |
1 |
-27 ~ 27 - 1 |
부호없음 |
unsigned char |
문자 및 부호가 없는 char형 정수 |
1 |
0 ~ 28 - 1 |
부동소수점형 |
float |
단일 정밀도 부동소수점 |
4 |
1.2E-38 ~ 3.4E38 |
double |
두배 정밀도 부동소수점 |
8 |
2.2E-308 ~ 1.8E308 |
언더플로우와 오버플로우
- 언더플로우(Underflow) : 값의 표현 범위보다 큰 값이 들어가서 일어나는 문제
- 발생시 최대 표현 범위보다 큰 만큼의 값이 최소 표현 범위에서 더해진다.
- 오버플로우(Overflow) : 값의 표현 범위보다 작은 값이 들어가서 일어나는 문제
- 발생시 최소 표현 범위보다 작은 만큼의 값이 최대 표현 범위에서 빼진다.
진법
- 자료형에 적합한 값을 저장할 때, 다양한 진법을 활용할 수 있다.
- 진법의 종류
- 2진법 : 0과 1로 이루어짐
- 8진법 : 0~7까지의 수로 이루어짐
- 사용법 :
int a = 010;
과 같이 사용하며, 8진수 10은 10진수로 8이다.
- 10진법 : 0~9까지의 수로 이루어짐
- 16진법 : 0
9, A(=10)F(=15)까지의 수로 이루어짐
- 사용법 :
int a = 0x10;
과 같이 사용하며, 16진수 10은 10진수로 16이다.
지수표기법
- 지수를 이용하여 값을 저장할 때 사용한다.
- 다양한 표기 방법
- 1.23456e4 = 12345.6
- 1.23456e-3 = 0.00123456
-
- = 2.0
- .34 = 0.34
- 2e+10 = 210
서로 다른 자료형끼리의 연산
- 자동 형변환
- 데이터의 손실이 적은 쪽으로 일어난다.
- 이 글 가장 위의 코드를 사용자가 직접 수정해가며 느끼는게 좋다.
- 강제 형변환
- 사용자가 명시적으로 자료형을 써주어 일어난다.
- 예 : int형 a를 float형으로 바꾸려면
문자형
- 문자 하나를 저장할 수 있다.
char c = 'A';
와 같이 사용한다.
- 한 문자는 작은따옴표를 이용하여 처리한다.
- 여러 문자는 큰따옴표를 이용하여야하며, 이는 '문자'가 아닌 '문자열'이다.
제어문자
- 아스키코드를 직접 사용하거나, 이스케이프 시퀀스를 사용할 수 있다.
- 자주 사용되는 제어문자
\0
: NULL
\t
: tab 문자
\n
: 줄바꿈 문자
\
: 따옴표나 역슬래쉬 등의 일반적인 방법으로 출력되지 않는 기호를 출력하기 위해 사용
Reference