티스토리 뷰
캐스팅 연산자
특징 : 단항연산자, 일시적으로 자료형을 변경해준다.(일시적일뿐 사용변수의 해당 자료형은 변경되지 않는다.)
사용방식 :(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 |
a + b 의 결과값은 왜 이상한 값일까?
정수와 실수를 더한 값을 10진수로 표현하면 저렇게 나온다.
때문에 캐스팅 연산을 이용해서 사용해주거나 출력방식을 바꿔야 한다.
a + (int)b 는 b가 실수지만 소수점 밑에 버리고 3만 int로 계산하고
a + 3 = 13
13으로 출력되는 것을 알 수 있다.
b + c = 3.14 + 99.9
= 103.04
(char)로 캐스팅했기 때문에 103의 아스키 코드값인 g가 출력 된다.
'ETC > 종합' 카테고리의 다른 글
기초 문법(while, do while, for, switch~ case) (0) | 2015.07.01 |
---|---|
기초 연산자연습(sizeof 연산자) (0) | 2015.07.01 |
기초 연산자연습(증감연산자) (0) | 2015.07.01 |
기초 연산자연습(대입연산자) (0) | 2015.07.01 |
연산자연습(논리연산자) (0) | 2015.07.01 |
Comments