위키 백과 (http://en.wikipedia.org/wiki/Type_conversion#Implicit_type_conversion)에서 다음 예제를 우연히 발견했습니다.C에서 암시 적 유형 변환
#include <stdio.h>
int main()
{
int i_value = 16777217;
float f_value = 16777217.0;
printf("The integer is: %i\n", i_value); // 16777217
printf("The float is: %f\n", f_value); // 16777216.000000
printf("Their equality: %i\n", i_value == f_value); // result is 0
}
그들의 설명 : ".이 이상한 행동은이 f_value과 비교하면 떠 i_value의 암시 적 캐스트에 의해 발생, 값을, 정밀도를 잃는 캐스트가 다른 비교되는"
잘못 아니셨습니까? i_value가 float로 형변환 된 경우, 둘 다 동일한 정밀도의 손실을 가지며 동일합니다. 그래서 i_value는 double으로 변환해야합니다.
g ++ (GCC 4.6.2)에서는 동등 함을 위해'1'을 얻습니다. –
@Kerrek : 그리고 나. VS에서 나는 0을 얻습니다. –
@OliCharlesworth : 리터럴을'f' 또는'double'으로 타입 변경하는 것에 대해 궁금합니다 - 모든 경우에'1'을 얻습니다 ... –