[C 형변환] 형변환과 현변환 연산자, 목표 : 형변환을 이해하고 형변환 연산자를 사용해 보자!
- 형변환
- 형변환 연산자
기본적으로 사칙연산은 같은 자료형끼리 해야 합니다.
즉, 정수형은 정수형 끼리, 실수형은 실수형 끼리 해야 한다는 것인데요.
그 결과 또한 같은 자료형이어야 됩니다.
연산과 자료형
예를 들어보겠습니다.
- 3+4 = 7 입니다. (3과 4는 정수형 이므로 그 결괏값도 정수형 7이 나옵니다.)
- 3/2 = 1 입니다. (3 나누기 2도 정수형끼리의 계산이므로 결괏값이 1.5가 아닌 정수형인 1만 남게 됩니다.)
[정수형에서 나눗셈은 몫을 구하는 연산] - 3.0 + 4.0 = 7.0 입니다. (3.0 실수형 + 4.0 실수형 이므로 결괏값도 7.0 실수형)
- 3.0/2.0 = 1.5 입니다. (실수형 / 실수형 = 실수형 )
형 넓히기
위와 같이 항시 같은 자료형을 사용하는 경우만 있는 것은 아닙니다.
아래와 같이 정수형 + 실수형은 어떻게 계산이 되어야 할까요?
3 + 4.0 = 7 or 7.0
c언어에서는 이때 결과가 7.0이 됩니다.
일반적으로 생각할 때 3 보다는 3.0 이 더 자리를 많이 차지하죠? 그런 것처럼 실수형이 정수형 보다는 넓은 자료형이라 할 수 있습니다. 그리고 실수형 안에서도 3.11이 3.1보다는 더 큰 것이 되는 것이고요.
결론적으로 두 피연산자의 자료형이 다르면 넓은 쪽으로 맞춘다 라는 것입니다.
그것을 형넓히기 라고 합니다.
3 + 4.0 의 경우 위에 언급한 것과 같이 '형 넓히기'로 4.0의 실수가 더 넓으므로 실수로 계산하여 7.0이 나옵니다.
5 / 2의 경우 값이 2가 되겠지만, 5.0 나누기 2의 경우 '형 넓히기'로 실수로 계산하여 2.5라는 값을 구할 수 있습니다.
형변환
char(케릭터)형,short형, signed형, unsigned형의 경우 컴퓨터가 효율적으로 처리할 수 있는 자료형을 int형으로 정하여 사용합니다.
2023.03.25 - [프로그래밍] - [자료형 형변환] 정수형 정수형의 변환 명세 [쉬운 설명과 예시]
▲int형, short형, unsigned형에 대한 자세한 설명은 위 링크 참조 바랍니다.
2023.03.25 - [프로그래밍] - [자료형 형변환] 실수형과 실수형의 변환 명세 [쉬운 설명과 예시]
2023.03.25 - [프로그래밍] - [C 문자형] 문자형, 아스키코드 연산, 문자계산, sizeof연산자
형변환 관련 자세한 내용은 위 링크 참조 부탁드립니다.
C Programing Language
- 두 피연산자 중 하나가 long double 이면, 다른 하나도 long double로 변환한다.
- 위 경우가 아닐 때, 한 피연산자가 double이면 다른 하나도 double로 변환한다.
- 위 두 경우가 모두 아닐 때, 한 피연산자가 float이면 다른 하나도 float으로 변환한다.
[즉, 한쪽이 실수형이면 다른 하나도 실수로 만들어라!] - 위 경우들이 모두 아닐 때, char 와 short는 int로 변환한다.
그럼 남는것은 int 나 long만 남겠죠? - 그리고 만일 한 연산자가 long이면 다른 하나도 long으로 변환한다.
(int 보다 long이 넓으니까, long으로 변환하는 것 입니다)
항상 더 넓은 것으로 맞추는데 정수의 경우에는 char(캐릭터)와 short는 int로 바꾸고 시작한다.
형좁히기가 진행되면 int(정수)인 a에 실수 2.5가 아닌 정수 2만 저장되므로 정보가 소실됩니다. 그래서 컴파일러 경고를 보실 수 있습니다.
만약에 경고가 싫고 실제 프로그래머가 의도적으로 자료를 변경한 것이라면 '형변환 연산자'를 사용하면 됩니다.
형변환 연산자가 자주 쓰이는 경우
아래와 같이 정수형 a, b, 실수 c형 가 선언되고 c에서 정수형 a / 정수형 b를 한 결과가 저장된다고 할 때
정수형 와 정수형의 계산이므로 정수형의 값만 남고 그 값이 실수형 c에 1.0으로 저장됩니다.
형변환 자를 사용하면 결과 값이 달라지는데요.
원래는 3/2인데 3이 실수형으로 바뀌어집니다. (double) a = a가 실수형으로 변환
그럼 형 넓히기에 의해서 정수형이 실수형으로 바뀌고 (b)
그래서 실수형 / 실수형이 되어 실수형 값인 1.5가 되어 c에 1.5가 저장됩니다.
이상 [C 형변환] 형변환과 형변환 연산자, 목표 : 형변환을 이해하고 형변환 연산자를 사용해 보자! 에 대한 내용이었습니다. 읽어주셔서 감사합니다.
'프로그래밍' 카테고리의 다른 글
[C언어 배열] C배열 기초, 다차원, 2차원 배열 [예시와 설명 2편] (0) | 2023.04.08 |
---|---|
[C언어 배열] C배열 기초, 다차원, 2차원 배열 [예시와 설명 1편] (0) | 2023.04.08 |
[C 문자형] 문자형, 아스키코드 연산, 문자계산, sizeof연산자 (0) | 2023.03.25 |
[자료형 형변환] 실수형과 실수형의 변환 명세 [쉬운 설명과 예시] (0) | 2023.03.25 |
[자료형 형변환] 정수형 정수형의 변환 명세 [쉬운 설명과 예시] (0) | 2023.03.25 |
댓글