이거 형변환 왜 안될까요?

조회수 482회

int c, f;

f=(int)((9.0/5)*c+32);

for(c=0;c<=50;c+=10)

printf("c=%d f=%d\n",c,f);

return0;

이렇게 짯는데 9.0/5가 계속 0으로 나오네요

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • 아래와 같이 해보세요.

    float f = 9.0/5;
    printf("f=%f\n", f);
    
  • int c, f;
    
    f=(int)((9.0/5)*c+32);
    
    for(c=0;c<=50;c+=10)
    
    printf("c=%d f=%d\n",c,f);
    
    return0;
    

    우선 f에 값을 대입할때 c는 사용자가 초기화되지 않은 상태이므로 c의 값이 기본 0이라 printf문에서 f는 무조건 32이 나오겠네요.

    int c{}, f{};
    for(c=0;c<=50;c+=10) {
        f=(int)((9.0/5)*c+32);
        printf("c=%d f=%d\n",c,f);
    }
    

    그리고 %d는 int형태의 10진수를 받습니다. 그러면 자연스럽게 소수점은 잘리므로 소수점을 표현하고 싶다면 %f를 쓰세요.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)