C 의 형변환 _ 명시적, 묵시적

😎·2023년 1월 13일
0

CPP

목록 보기
31/46

명시적 묵시적 형변환

캐스팅은 크게 2가지 방법이 있다. 아래는 C 에서 형변환을 하는 방식이다.

  1. 명시적 캐스트 - explicit cast
  2. 묵시적 캐스트 - implicit cast
1. int    a = 42;
2. double b = a;          // implicit conversion cast
3. double c = (double)a;  // explicit conversion cast

4. double d = a;          // implicit promotion cast -> OK;
5. int    e = d;          // implicit demotion cast -> 위험!;
6. int    f = (int)d;     // explicit demotion cast -> OK;

묵시적 캐스트

다음과 같이 () 안에 따로 casting 할 자료형 타입을 적지 않았다. 이런 방식을 묵시적 캐스트라고 한다.

int    a = 42;
double b = a;  // explicit conversion cast

...

double d = a;  // implicit promotion cast -> OK;
int    e = d;  // implicit demotion cast -> 위험!;

묵시적 캐스트는 가독성을 해칠 수 있기 때문에 안하는게 좋다고 생각한다.

명시적 캐스트

다음과 같이 ( 자료형 ) 과 함께 casting 하는 것을 의미한다.

int    a = 42;
double c = (double)a;  // explicit conversion cast

...

double d = a;          // implicit promotion cast -> OK;
int    f = (int)d;     // explicit demotion cast -> OK;

생각

int 형을 double 형으로 변환하는 경우 더욱 정밀한 자료형으로 변환하는 promotion casting 이기 때문에 자료형을 명시하지 않아도 문제가 발생하지 않는다.

하지만 doubleint 로 변환하는 5 ~ 6 번째 줄의 경우 정밀도가 낮아지는 자료형으로 변환하는 demotion casting 이기 때문에 위험할 수 있다.

C 는 컴파일러에 따라 에러를 출력하기도 하고 안하기도 하지만, 내가 사용하고 있는 mac 에서는 컴파일 해준다.

profile
jaekim

0개의 댓글