티스토리 뷰

캐스팅 연산자

 

특징 : 단항연산자, 일시적으로 자료형을 변경해준다.(일시적일뿐 사용변수의 해당 자료형은 변경되지 않는다.)

사용방식 :(datatype)

int a = 97 ;

printf(" %c \n", (char)a ) ;

 

#include<stdio.h>

int main(){

int a = 10;

float b = 3.14;

double c = 99.9;

printf(" a + b = %d \n ", a + b);

printf(" b + c = %d \n ", b + c);

 

printf(" a + b = %d \n ", a + (int)b); // int로 변경시 소수점 밑은 전부 버림.

printf(" b + c = %c \n ",(char)(b + c));

 

return 0 ;

}

 

소스 출력 결과

 

   a + b = 402653184
  b + c = 1553570202
  a + b = 13
  b + c = g

 

a + b 의 결과값은 왜 이상한 값일까?

정수와 실수를 더한 값을 10진수로 표현하면 저렇게 나온다.

때문에 캐스팅 연산을 이용해서 사용해주거나 출력방식을 바꿔야 한다.

a + (int)b 는 b가 실수지만 소수점 밑에 버리고 3만 int로 계산하고

a + 3 = 13

13으로 출력되는 것을 알 수 있다.

b + c = 3.14 + 99.9

 = 103.04

(char)로 캐스팅했기 때문에 103의 아스키 코드값인 g가 출력 된다.

 

 

 

 

 

 

 

 

 

Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday