본문 바로가기
프로그래밍

[C 형변환] C형변환 과 형변환 연산자, 형변환 계산 [쉬운 예시와 설명]

by 스텔라게이트 2023. 4. 6.

[C 형변환] 형변환과 현변환 연산자, 목표 : 형변환을 이해하고 형변환 연산자를 사용해 보자! 

  1. 형변환
  2. 형변환 연산자 

기본적으로 사칙연산은 같은 자료형끼리 해야 합니다. 

즉, 정수형은 정수형 끼리, 실수형은 실수형 끼리 해야 한다는 것인데요. 

그 결과 또한 같은 자료형이어야 됩니다. 

 

연산과 자료형 

예를 들어보겠습니다. 

  • 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보다는 더 큰 것이 되는 것이고요. 

결론적으로 두 피연산자의 자료형이 다르면 넓은 쪽으로 맞춘다 라는 것입니다. 

그것을 형넓히기 라고 합니다. 

C언어 형넓히기 계산
C언어 형넓히기 계산

3 + 4.0 의 경우 위에 언급한 것과 같이 '형 넓히기'로 4.0의 실수가 더 넓으므로 실수로 계산하여 7.0이 나옵니다. 

5 / 2의 경우 값이 2가 되겠지만, 5.0 나누기 2의 경우 '형 넓히기'로 실수로 계산하여 2.5라는 값을 구할 수 있습니다. 

형변환 

char(케릭터)형,short형, signed형, unsigned형의 경우 컴퓨터가 효율적으로 처리할 수 있는 자료형을 int형으로 정하여 사용합니다. 

C언어 형변환
C언어 형변환

2023.03.25 - [프로그래밍] - [자료형 형변환] 정수형 정수형의 변환 명세 [쉬운 설명과 예시]

▲int형, short형, unsigned형에 대한 자세한 설명은 위 링크 참조 바랍니다. 

2023.03.25 - [프로그래밍] - [자료형 형변환] 실수형과 실수형의 변환 명세 [쉬운 설명과 예시]

2023.03.25 - [프로그래밍] - [C 문자형] 문자형, 아스키코드 연산, 문자계산, sizeof연산자

형변환 관련 자세한 내용은 위 링크 참조 부탁드립니다. 

 

C Programing Language 

  1. 두 피연산자 중 하나가 long double 이면, 다른 하나도 long double로 변환한다. 
  2. 위 경우가 아닐 때, 한 피연산자가 double이면 다른 하나도 double로 변환한다. 
  3. 위 두 경우가 모두 아닐 때, 한 피연산자가 float이면 다른 하나도 float으로 변환한다. 
    [즉, 한쪽이 실수형이면 다른 하나도 실수로 만들어라!]
  4. 위 경우들이 모두 아닐 때, char 와 short는 int로 변환한다. 
    그럼 남는것은 int 나 long만 남겠죠? 
  5. 그리고 만일 한 연산자가 long이면 다른 하나도 long으로 변환한다. 
    (int 보다 long이 넓으니까, long으로 변환하는 것 입니다)
    항상 더 넓은 것으로 맞추는데 정수의 경우에는 char(캐릭터)와 short는 int로 바꾸고 시작한다. 

반응형

형좁히기가 진행되면 int(정수)인 a에 실수 2.5가 아닌 정수 2만 저장되므로 정보가 소실됩니다. 그래서 컴파일러 경고를 보실 수 있습니다. 

만약에 경고가 싫고 실제 프로그래머가 의도적으로 자료를 변경한 것이라면 '형변환 연산자'를 사용하면 됩니다. 

C형변환 연산자
C형변환 연산자

 형변환 연산자가 자주 쓰이는 경우 

아래와 같이 정수형 a, b, 실수 c형 가 선언되고 c에서 정수형 a / 정수형 b를 한 결과가 저장된다고 할 때 

정수형 와 정수형의 계산이므로 정수형의 값만 남고 그 값이 실수형 c에 1.0으로 저장됩니다. 

형변환 자를 사용하면 결과 값이 달라지는데요. 

원래는 3/2인데 3이 실수형으로 바뀌어집니다. (double) a = a가 실수형으로 변환  

그럼 형 넓히기에 의해서 정수형이 실수형으로 바뀌고 (b) 

그래서 실수형 / 실수형이 되어 실수형 값인 1.5가 되어 c에 1.5가 저장됩니다. 

 

이상 [C 형변환] 형변환과 형변환 연산자, 목표 : 형변환을 이해하고 형변환 연산자를 사용해 보자! 에 대한 내용이었습니다. 읽어주셔서 감사합니다. 

 

반응형

댓글