NULL
자동 형 변환(Conversion) 본문
자동 형변환이라는 것은
암시적(implicit Conversion)과
명시적 형변환(Explicit Conversion)이 있다.
암시적은?
자동으로 형 변환한다.
자동 형변환의 원칙은 표현범위가
좁은 데이터타입에서 넓은 데이터타입으로의
변환만 허용된다는 것이다.
만약 넓은 데이터타입에서
좁은 데이터타입으로 변환한다면
데이터가 손실될 수 있다.
예) float < double
float 1~10 , double 1~100
float값이 10이라면 double로 형변환해도
값의 손상이 전혀없다.
하지만 반대로
double값이 100인데 float로 형변환한다면
float는 10이 최대범위라서
10이 남고 90은 짤려나가서 손실된다.
정수와 실수도 마찬가지로
실수가 3.0인데 정수로 형변환한다면
소수점이 잘려나가서 3이 되고
반대로
정수 3이 실수로 형변환되면
3.0이 된다.
실수를 정수로 형변환 시키면
소수점뒷자리가 사라지기때문에
정보에 손실이 발생한다.
(double > int) 큰거에서 작은걸로 자동변환못함
그렇기 때문에 컴퓨터는
암시적으로 실수를 정수로 형변환을 하지않는다.
따라서 자동 형변환은
손실이 없는 상태에서만 허용된다.
명시적은?
float a = 100.0;
int b = 100.0;
자동 형 변환이 이루어지지않는다.
100.0은 실수이며 실수는
기본적으로 double을 사용한다.
오류를 해결하려면 형변환을 해야한다.
하지만
- 큰 데이터타입에서 좁은 데이터타입으로는 암시적 형변환이 되지않는다.
(데이터 손실이 발생할수있기 때문에)
이럴때 바로
float a = (float)100.0;
int b = (int)100.0;
형변환 결과는 보기와 같다.
'C' 카테고리의 다른 글
while문 반복문 (0) | 2016.12.14 |
---|---|
필드폭 개념 (0) | 2016.12.14 |
심볼릭상수 개념정리 (0) | 2016.12.14 |
리터럴상수와 접미사 (0) | 2016.12.14 |
아스키코드 (ASCII) (0) | 2016.12.14 |