2014-09-27 2 views
-1

% u 지정자와 부동 변수를 사용하는 중에 예기치 않은 출력이 나옵니까? 내 코드가 이해하는데 도움이 되니?% u 지정자를 float 변수와 함께 사용하는 중에 예기치 않은 출력이 나옵니까?

int main() 
    { 
    float f=9.8; 
    printf("%u",f); //unexpected out put what will be out put and why please help to understand ? 
    } 
+2

이것은 예기치 않은 일은 아닙니다. 당신이하려는 것은 난센스입니다. 당신은 어떻게 될 것으로 예상합니까? '% u'는'unsigned int'를 기대합니다.'float'을 넘겨서 작동시킬 수는 없습니다. 'printf ("% u", (unsigned) f);'괜찮을 것입니다. –

+0

이것은 단지 어리석은 질문입니다. 나는 그것을 설명하는 다른 방법을 생각할 수 없다. 모든 printf 문서는 그것이 무엇인지에 대한 그런 광기를 드러 낼 것입니다. –

답변

2

u 형식 지정자는 unsigned int을 의미합니다. printf으로 전화하면 float을 부호없는 int로 변환 할 수 없으므로 printffloat의 비트를 unsigned int으로 재 해석합니다. 당신이 정말로 정수로 출력을 원하는 경우

, 당신은 명시 적으로 캐스팅해야합니다

printf("%u", (unsigned int) f); 

을 아니면 부동 소수점으로 출력 그것을 의미하는 경우, 사용 %f :

printf("%f", f); 
관련 문제