본문 바로가기
개발 공부/C언어

#6 C언어 사칙연산할 때의 자료형 변환

by 반달bear 2022. 8. 1.
반응형

 

double c= int a/ double b;

int인 a를 double인 b로 나누면 결과는 double??int???

정답! double!!!

 

 

CPU는 같은 자료형의 두 피연산자를 대상으로만 연산이 가능하도록 설계되어 있습니다. (a와 b가 피연산자이다.)

그러므로 a와 b는 컴파일 에러가 떠야하는데 어떻게 실행이 되는걸까요?

 

답은 '자동 형 변환'이 일어나기 때문입니다.

 

직관적으로 생각했을때 보다 넓은 수의 범위를 포함하는 자료형으로 자동 형 변환이 일어납니다.

int는 정수고 double은 소수점까지 포함하니까 직관적으로 int가 double로 승격이 일어나는거!!!

 

책을 보면 

int -> long -> long long -> float -> double -> long double 순으로 자동 형 변환이 일어난다고 되어 있습니다.

 


 

한 가지 더!! 

 

double c= int a/ int b; 일때 

연산결과의 자료형은(double c) 피연산자의 자료형과(int a, int b) 일치한다고 한다고 합니다.

그러니까 double c= int a/ int b; 일때 c의 값은 int로 계산된 이후 출력이 되는 것입니다.

double c = 2/3; 이라는 문장이 있어도 답이 소수점으로 나오지 않고 0으로 계산된 이후 double 형으로 출력이 되어 0.00으로 표기됩니다.

 

혹여 int c = int a/ double b; 라면

피연산자 중에 double형이 있기에 자동 형 변환으로 int a가 double로 바뀌어서 double a/ double b로 계산됩니다.  

그러나 double로 계산된 값은 int 형으로 바뀌어 출력됩니다! 즉 소수점 밑의 값이 절삭되는 것입니다.

 


 

이 글에서 알 수 있는 건 피연산자들끼리 같은 자료형이 된다는 자동 형 변환!

그리고 연산결과는 피연산자의 자료형을 따라간다는 사실입니다.

 

 

 

반응형

댓글