오늘은 마지막 연산자로서 형 변환 연산자에 대해서 이야기를 하도록 하겠습니다. 캐스트 연산자라는 것은 특정 자료형을 다른 자료형으로 변환 시키는 연산자를 말합니다. 오늘 내용은 어렵지 않고 아주 간단해서 굳이 post로 작성해야 하나 고민하다가 그냥 작성하게 되었네요. 그럼 캐스트 연산자를 간단히 살펴보도록 하죠.
아래 예로 간단히 설명하겠습니다.
예)
float s;
s = (float) 5/2;
보시면 5나누기 2의 값을 float형으로 s에 대입하는 문장입니다. 여기서 계산된 결과를 float형으로 변환해서 s에 답는다는것이 핵심입니다.
그냥 5/2하면 5도 정수(int)형이고 2도 정수(int)형입니다. 그래서 "정수/정수 "의 결과는 정수값이 됩니다. 그래서 소수점 아래는 절삭이 되고 맙니다. 정상적으로 나눗셈의 결과를 얻기 위해서는 형 변환이 필요합니다.
나눗셈은 float/int or float/float or int/float 형이 되어야 정상적인 나눗셈이 됩니다. int형을 float형으로 변환 함으로 나눗셈 값을 정상적으로 구할 수 있게 됩니다.
형변환은 해당 숫장 앞에 (자료형)을 붙여만 주면 쉽게 변환이 되기 때문에 어렵지 않죠.
또 다른 표현
float a = 10.2;
int b;
b=a;
계산 결과를 형을 변환하여 위에서 값을 만들어 냈다면 이번에는 이미 float형으로 되어 있는 값을 int형인 b에 대입함으로서 자동으로 int형으로 자동으로 변환 됩니다.
결론은 대입하기 전 계산에서 형변환하여 대입 할 자료형으로 변환 시키거나 아니면 계산 된 결과를 자동으로 대입하여 대입 할 변수의 자료형으로 변환하는 방법이 있는데 적절하게 활용하시기 바랍니다.
위 설명에서 형변환을 했을 때 어떤 결과를 얻게 되는지 실제 코딩으로 살펴 봅시다.
[소스]
#include
int main(int argc, char *argv[]) {
float s;
s = (float)5/2;
printf("%f \n",s);
return 0;
}
[결과]
형변환 없다면
s = 5/2;
[결과]
보시는 것처럼 소숫점 아래는 절삭이 됩니다. 형변환이 중요한 이유를 아시겠지요. 뭔가를 계산 할 때는 형변환을 통해 계산의 실수를 줄여 주세요. 위 코딩은 단순한 형태이지만 복잡한 계산에서 형을 정확히 맞춰주지 않는 다면 문제가 생길 수 있기 때문에 형변환을 적설히 활용하세요.
[소스]
#include
int main(int argc, char *argv[]) {
float a=10.2;
int s;
s = a;
printf("%d \n",s);
return 0;
}
[결과]
보시는 것처럼 10이 출력 됩니다. 소숫점 이하는 자동으로 절삭이 됩니다. 계산형과 저장변수형과 일치하지 않으면 이렇게 문제가 생길 수 있습니다. 그래서 될 수 있으면 계산하는 식에는 형을 대입하기 전에 표현함으로서 실수 코딩을 줄여주시기 바랍니다. 자료형으로 인한 오류도 은근 발생하니깐 자료형을 적절히 표현해주시면 좋습니다.
오늘의 내용은 계산을 하거나 계산된 결과를 적절히 변환 될 자료형으로 표현함으로서 정확한 결과를 얻도록 하는 형변환 연산자에 대해서 알아 보았습니다.
변수 = (형변환자료형) 값;
어려운 표현이 아니기 때문에 간단히 읽고 넘어가시기 바랍니다.