형 변환
문자열을 정수로 취급하는 것은 안되지만, 정수를 실수로 다루거나 그 반대는 가능합니다.
이 때, 정수 타입과 실수 타입에는 특별한 관계가 있습니다.
아래의 사진을 보면
num에 3.5를 대입하고 출력했는데 3만 나왔습니다. int형에 대입을 했기 때문에 자동으로 소수점은 표현하지 않습니다.
이렇게 값을 타입에 맞게 변경하는 것이 형 변환입니다.
이는 반대의 상황에도 성립합니다.
이번에는 타입에 따라 연산결과가 어떻게 바뀌는지 알아보겠습니다.
3을 5로 나눴는데 0.6이 아닌 0이 나왔습니다.
이렇게 나온 이유는 int와 int를 연산하면 결과 값도 int로 저장됩니다. 이때, 0.6이 0으로 짤린 것입니다. 그 후 double에 대입된다고 해도 이미 0이기 때문에 double ans에는 0이 대입됩니다.
이럴때는 어떻게 해야 할까요?
명시적 형 변환이라는 방법을 사용합니다.
캐스트 연산자
명시적 형 변환은 위의 코드처럼 ( )안에 타입을 적어서 그 타입으로 변경하겠다고 알려주는 것입니다.
( )를 캐스트 연산자라고 합니다.
연산을 할 때는 두 피연산자 중 하나만 형변환을 해주면 알아서 double로 바뀝니다. int보다 double의 크기가 더 크기 때문입니다.
이런 이유로 처음부터 다른 두 타입의 값이 연산되면 굳이 캐스트 연산자로 바꿔줄 필요가 없습니다.
이것으로 연산을 했을 때 타입이 어떻게 변하는지. 그리고 타입으로 변환이 필요할 때 어떻게 형 변환을 하는지에 대해 알아보았습니다.
이상으로 1칠판 마무리 하겠습니다.
'C++' 카테고리의 다른 글
[6] 함수 오버로드 (0) | 2021.04.28 |
---|---|
[5] 인라인 함수 (0) | 2021.04.28 |
[3] 입력과 출력 (0) | 2021.04.28 |
[2] 프로그램 시작을 위한 준비 (0) | 2021.04.28 |
[1] 코드부터 프로그램 실행까지 (0) | 2021.04.27 |