일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- yarn
- 코딩더매트릭스
- 딥러닝
- 선형대수
- NumPy
- scrapy
- codingthematrix
- 그래프이론
- 주식분석
- RNN
- graph
- effective python
- Java
- LSTM
- hive
- Sort
- tensorflow
- 하이브
- GRU
- 파이썬
- hadoop2
- C
- C언어
- HelloWorld
- 하둡2
- python
- collections
- recursion
- 알고리즘
- 텐서플로
- Today
- Total
EXCELSIOR
[C] Chap02 - 자료형(Data Type) 본문
C 언어의 자료형(data type)은 일정 크기(길이)의 메모리에 저장된 정보(자료)를 해석하는 방법이라 할 수 있다.
자료(data)란 수(number)을 의미한다. 그 이유는 컴퓨터가 처리할 수 있는 정보는 오직 숫자 뿐이기 때문이다. 자료형은 의미 그대로 형식을 의미하며, 서로 약속된 구조로써 다양한 형식이 존재한다.
2.1 변수와 상수
상수
상수는 값이 확정되어 앞으로 변할 가능성이 없는 수를 말하며, C 언어에서 상수의 종류는 다음과 같다.
리터럴 상수
문자 상수 : ex. 'A'
문자열 상수 : ex. "Hello, World"
정수 상수 : ex. 3, 4L
실수 상수 : ex. 3.4F, 123.45
심볼릭 상수
형한정:
const
형한정어를 이용하여 선언 및 정의되는 상수 → 값이 변할 수 없는 변수이며, 이름을 가진 상수 (ex.const int nMax = 100;
)전처리기:
#define
전처리기로 선언 및 정의되는 상수.
변수
변수는 구체화하지 않았거나 앞으로 변경될 가능성이 있는 수 를 말한다.
변수는 이름으로 식별한다.
변수는 그릇이고 상수는 그릇에 담을 값이다.
변수의 개수는 적을 수록 좋다. → 많을 수록 프로그램이 복잡해짐
변수는 메모리로 구현되며, 메모리는 주소를 가진다.
2.1.1 C 언어의 자료형
분류 | 자료형 |
---|---|
정수형 |
|
실수형 |
|
유도형 | * : 4(32비트 App), 포인터. 메모리의 주소를 의미
[] : 배열, 동일 요소의 집합체
구조체 : 서로 다른 요소들의 집합체
공용체 : 동일 메모리에 다양한 해석방법을 부여하는 방법 |
- | void : 무치형, 길이 및 해석방법이 없는 자료형 |
2.1.2 부호비트와 자료비트 그리고 표현범위
8비트는 1바이트로 표시되며, C 언어의 자료형에서 부호가 있는 정수형의 경우, 가장 왼쪽 1 비트를 부호비트(sign bit)로 사용한다.
부호비트 | |---- | ------- | ------- | 자료비트 | ------- | ----- | ----| |
---|---|---|---|---|---|---|---|
1bit | 1bit | 1bit | 1bit | 1bit | 1bit | 1bit | 1bit |
2진수 한자리수로 표현할 수 있는 숫자는 0, 1
두가지이므로 이다. 따라서, 7비트로 표현할 수 있는 수는 (부호비트가 0인 경우)이다. 부호비트가 1이면 음수가 되고, 위의 8비트 정수형의 표현 범위는 즉. 까지 이다.
크기 | 자료형 | 표현범위 |
---|---|---|
8비트 | char | |
unsigned char | | |
16비트 | short | |
unsigned short | | |
32비트 | int | |
unsigned int | | |
long | | |
unsigned long | |
2.2 정수 자료형과 변수, 상수
변수는 사용에 앞서 반드시 선언(declaration)을 해줘야 한다. 변수는 이름, 주소(메모리) 값(자료) 3가지 값을 가진다.
int nData = 10; // -> 선언 및 정의
2.2.1 char
와 ASCII 코드
컴퓨터는 오직 숫자만 표현할 수 있으며, 글자(문자)를 표현할 수 없다. 그래서 나온 대안은 특정 숫자를 문자로 규정하는 것인데 이를 부호체계라 한다. 이 부호체계를 ASCII(American Standard Code for Information Interchange)라 한다.
ASCII 코드는 비트로 문자를 표현하는 코드체계였으나 여기에 확장 비트를 하나 더해 보통 비트로 표현된다. 영문 한 글자를 저장할 수 있는 메모리의 크기(1byte)가 8비트 이다. 문자를 표현하는 형식인 char
형은 부호가 있는 비트(byte) 정수형이다.
char ch = 'A';
2.3 실수 자료형
실수 자료형은 소수점 이하의 숫자 정보까지 표현할 수 있는 자료형을 말한다. 다른 말로 부동 소수점표현이라고도 하는데, 부동 소수점은 100.0이라는 실수를 10.0 x 10
또는 1.0 x 100
표현할 수 있으며, 이렇게 소수점의 위치가 다른 자리로 변경될 수 있음을 의미한다.
컴퓨터는 실수를 명확하게 표현할 수 없다. 두 정수 사이에 있는 실수의 수를 확실하게 말할 수 없기 때문이다. 그렇기 때문에 컴퓨터가 실수를 표현하는 방법은 일정 수준의 오류(부동 소수점 오차)를 전제로 한다.
컴퓨터의 실수 표현이 부정확한 이유는 무수히 많은 소수점 이하 숫자 표현이 불가능하므로 일정 수준까지만 표현하기로 확정하고 그보다 더 정밀한 숫자는 범위상 가까운 숫자로 인식한다.
크기 | 자료형 | 표현범위 |
---|---|---|
32 비트 | float | ~ |
64 비트 | double | ~ |
79 비트 | long double | double 이상 |
2.4 문자와 문자(배)열
문자열을 정확하게 표현하면 문자의 배열 즉, 여러 문자 인스턴스가 모인 집합체라고 한다. 문자열은 그 자체가 배열(array
)임에도 불구하고 다른 자료형 처럼 인스턴스가 한개라고 착각하는 경우가 많다.
배열은 한 개의 인스턴스가 아니라 여러 인스턴스가 모여 한 덩어리를 이룬 집합체라는 것과 개별 인스턴스에 부여된 이름이 아니라 주소에 이름을 부여한다.
int main(void)
{
char c1 = 'A', ch2 = 'B', ch3 = 'C';
char szData[4] = {'A', 'B', 'C'};
char szNewData[4] = {"ABC"};
printf("%s\n", szData);
printf("%s\n", szNewData);
// Array에 명시된 값이 없으면 0으로 초기화
printf("%d", szData[3]);
return 0;
}
위의 코드에서 char szData[4]
는 char
인스턴스 네 개를 의미한다.
szName[0] | szName[1] | szName[2] | szName[3] |
---|---|---|---|
'A' | 'B' | 'C' | '\0' |
szName[3]
에는 별다른 명시가 없었으므로 0
으로 초기화된다.
2.5 이름과 주석문
모든 언어의 프로그램 코드는 그 자체로 하나의 문서이다. 따라서 코드를 읽기 좋은 코드를 작성하는 것이 좋다.
변수의 이름은 이름에서 목적이 드러나는 것이 좋다. 예를 들어 최종 연산결과가 저장되는 변수의 이름을 nResult
라고 할 수 있다.
주석문은 코드 내에서 메모를 남길 수 있는 문법이다. C 언어에서의 주석문은 다음과 같다.
//: 한 행을 주석 처리
'C&C++ > C - Programming' 카테고리의 다른 글
[C] Chap06 - 기본 제어문 Control Statement (0) | 2018.05.08 |
---|---|
[C] Chap05 - 연산자 (응용) (0) | 2018.05.03 |
[C] Chap04 - 연산자 (기본) (0) | 2018.05.01 |
[C] Chap03 - 표준 입출력 도구 (0) | 2018.04.26 |
돌고 돌아 결국 C언어... (0) | 2018.04.25 |