내 C 코드가 어떻게 결과를자를 지 예측하는 데 약간의 어려움이 있습니다. 다음을 참조하십시오.캐스팅시 다른 잘림 결과
float fa,fb,fc;
short ia,ib;
fa=160
fb=0.9;
fc=fa*fb;
ia=(short)fc;
ib=(short)(fa*fb);
결과는 ia = 144, ib = 143입니다.
두 결과에 대한 추론을 이해할 수 있지만 왜 두 계산이 다르게 취급되는지 이해할 수 없습니다. 누구든지이 행동이 정의 된 곳으로 안내하거나 차이점을 설명 할 수 있습니까?
편집 : 결과는 Intel 코어 i3-330m에서 MS Visual C++ Express 2010으로 컴파일됩니다. 동일한 머신에서 Virtual Box 아래에 gcc 4.4.3 버전 (Ubuntu 4.4.3-4ubuntu5)과 동일한 결과가 나타납니다.
어떤 대상 CPU입니까? – EboMike