일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정수론
- JavaScript
- BFS
- server
- Cleancode
- C언어
- DP
- php
- web
- BASIC
- udemy
- greedy
- String
- sorting
- 종만북
- dfs
- programmers
- BOJ
- 따라하며 배우는 C언어
- Algorithm
- 백준
- Algospot
- 따배씨
- 인프런
- 따라하면서 배우는 C언어
- Math
- 생활코딩
- C
- graph
- Python
- Today
- Total
몽상실현개발주의
[C] 형 변환 Type Conversion 본문
[C] 형 변환 Type Conversion
C 언어의 자료형은 각각의 Data 가 저장되는 방식을 의미한다.
모든 데이터는 2진수로 저장 되지만, type 에 따라 Binary 로 표현되는 방식이 다르므로 저장되는 form 이 다르다는 의미이다.
int type 200 의 binary
00000000 00000000 00000000 11001000
float type 200.0 의 binary
01000011 01001000 00000000 00000000
이렇게 서로 다른 form 으로 저장되어 있는 Data 를, 원하는 Type 의 형식으로 저장 형태를 바꾸는 것을
형 변환 Type Conversion 이라고 한다.
형 변환에는 2가지 방법이 있다.
- 자동 형 변환(암시적 형 변환)
- 강제 형 변환(명시적 형 변환)
1. 자동 형 변환 (암시적 형 변환)
double a = 3.0F;
- double 타입의 변수 a 에 float 타입의 값을 대입 할 때, 자동으로 double 타입으로 형 변환 발생
- double 타입이 float 타입보다 더 많은 수를 표현 가능
- 타입을 변경해도 정보의 손실이 일어나지 않는 경우 자동 형 변환 발생
메모리 크기가 작은 자료형에서 큰 자료형으로 변환되는 것이 우선순위
2. 강제 형 변환 (명시적 형 변환)
큰 자료형에서 작은 자료형으로 Data type 을 변환 할 때, Data 의 손실이 발생한다.
char c = 1106;
printf("%c\n", c);
- 1106 은 binary 11 bits 가 필요, char 형은 8bits 이므로 Data 손실이 발생
- 1106 = 10001010010 (11bits) -> 01010010 (8bits) = 82
- ASCII Code 82 에 해당하는 문자인 'R' 이 출력
이러한 Data 손실을 최소화 하기 위해, 형 변환시 변환될 Data Type 을 명시하여 손실을 최소화 할 수 있음.
- 데이터 손실이 없는 경우(확장 변환, 프로모션(Promotion))
- 작은 자료형에서 큰 자료형으로 전환될 경우 데이터 손실이 발생하지 않습니다.
- Ex) int → double 손실 X
- 데이터 손실이 있는 경우(축소 변환, 디모션(Demotion))
- 큰 자료형에서 작은 자료형으로 전환될 경우 데이터 손실이 발생합니다.
- Ex) double → int 손실 O
#include <stdio.h>
int main(void){
//문자형(작은 자료형)
char num1 = 130;
//데이터 손실 발생
//int(정수형)
int num2 = 3.14;
//데이터 손실이 일어남
//실수형(큰 자료형)
double num3 = 5;
printf("%d\n %d\n %lf\n", num1, num2, num3);
return 0;
}
- char num1 = 130
- -126
- char의 데이터 범위는 -128 ~ +127인데 130으로 데이터 손실 and Overflow 발생
- int num2 = 3.14
- 3
- 정수형 int는 소수점을 담아내지 못해 데이터 손실 발생
- double num3 = 5;
- 5.000000
- 실수형 double 은 정수형의 메모리 크기보다 크기 때문에, 데이터 손실이 발생 X
참고 블로그
https://moolgogiheart.tistory.com/58
[C언어 강좌] 자동 형 변환/강제 형 변환
관련 글 [C언어 강좌] 자료형(정수/실수)의 종류와 크기(sizeof 함수) C언어 강좌 자료형끼리는 형 변환이 가능합니다. 즉, int형을 double형으로 바꾸고, char형을 int형 등으로 바꿀 수 있다는 소리죠!
moolgogiheart.tistory.com
https://opentutorials.org/course/1223/5330
형변환 - 생활코딩
형 변환 형 변환(Type Conversion)이란 데이터의 타입을 변경하는 것이다. 예를 들어 int 타입의 정수 200의 bit 값은 아래와 같다. 00000000 00000000 00000000 11001000 프로그래밍을 처음 시작하는 사람도 컴퓨
opentutorials.org
'Language > C' 카테고리의 다른 글
[따배씨] 6.2 의사 코드 ~ 6.3 진입조건 루프 (0) | 2021.05.19 |
---|---|
[따배씨] 6.1 while 반복 루프에서 scanf()의 반환값 사용하기 (0) | 2021.05.19 |
[따배씨] 5.12 함수의 인수와 매개변수 (0) | 2021.05.18 |
[따배씨] 5.10 순서도 ~ 5.11 자료형 변환 (0) | 2021.05.18 |
[따배씨] 5.9 표현식과 문장 (0) | 2021.05.18 |