본문 바로가기
공부/개발노트

[C/C++] 연산 중 발생한 형변환

반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main(){
    int i = 10;
    float f = 10.0f;
    
    float i_div_4, f_div_4;
    i_div_4 = i / 4;
    f_div_4 = f / 4;
    
    cout << "i = " << i << endl;
    cout << "f = " << f << endl;
    cout << "i_div_4 = " << i_div_4 << endl;
    cout << "f_div_4 = " << f_div_4 << endl;
        
    return 0;
}
cs



계산 중에 형 변환이 되었다.

결과는 float 타입에 담았기 때문에 2.5가 나와야 당연하다고 생각이 된다. 하지만 C++의 규칙은 그렇지 않다. 방금 전에 말한 데로 연산 중의 형변환은 오직 피연산자의 타입에만 영향을 받는다. 결과를 받는 변수의 타입은 아무런 영향을 받지 않는다.


9번째 줄에서는 피연산자가 모두 int 타입이므로 결과 역시 int 타입이된다. 그렇기 때문에 소수점 이하 부분이 잘린 2를 반환한 것이다. 10번 째 줄에서는 피연산자의 한 쪽이 float 타입이기 때문에 다른 한 쪽, 즉 4도 float 타입으로 형변환한다. 결과 역시 float 타입이 되고 2.5이 반환된다.




반응형