0
할당의 일부로 다음과 같은 표현식을 사용하고 있습니다. (double) (float) x == (double) x 은 오버레이 1을 반환합니다. 부호있는 정수)캐스팅과 부동 결과를 두 배로 사인 한 다음 double float으로 변환합니다.
INT_MAX를 제외한 모든 값에 대해 작동합니다. 왜 그런지 궁금 해서요? 만약 내가 값을 인쇄하면, 둘 다 INT_MAX에 대해서도 같은 값을 보여줍니다.
x = INT_MAX ;
printf("Signed X: %d\n",x);
float fx1 = (float)x;
double dx1 = (double)x;
double dfx = (double)(float)x;
printf("(double) x: %g\n",dx1);
printf("(float) x: %f \n",fx1);
printf("(double)(float)x: %g\n",dfx);
if((double) (float) x == (double) x){
printf("RESULT:%d\n", ((double)(float) x == (double) x));
}
EDIT : 전체 프로그램 :
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
int main(int argc, char *argv[]){
//create random values
int x = INT_MAX ;
printf("Signed X: %d\n",x);
float fx1 = (float)x;
double dx1 = (double)x;
double dfx = (double)(float)x;
printf("(double) x: %g\n",dx1);
printf("(float) x: %f \n",fx1);
printf("(double)(float)x: %g\n",dfx);
if((double) (float) x == (double) x){
printf("RESULT:%d\n", ((double)(float) x == (double) x));
}
return 0;
} 메인 함수 // 단부
float로 캐스팅 할 때 정밀도를 잃을 가능성이 가장 높습니다. – thumbmunkeys
왜 INT_MAX를 제외한 * 모든 값에 대해 "작동"한다고 생각합니까? 모두 시도한 적이 있습니까? (해야합니다!) –
프로그램의 결과물을 보여주기 위해 질문을 갱신하십시오.'#include'과'main' 함수의 정의를 포함하여 전체 프로그램을 보여주는 것도 좋을 것입니다. 그리고'% f'와'% g'의 혼합 –