none
학교 공부중에 c언어 질문있습니다!! RRS feed

  • 질문

  • #include <stdio.h>

    int main()
    {
    int R;
    double round;
    double square;

    printf("원의 반지름을 입력하시오:");
    scanf_s("%d", &R);
    round = 2 * 3.14* R;
    square = 3.14 * R * R;
    printf("둘레=%lf, 평균=%lf \n", &round, &square);

    return 0;
    }

    이렇게 입력했습니다(과제는 원의 반지름 가지고 둘레와 면적을 구하는것입니다)

    그런데 

    1>c:\users\tadap\desktop\test0\test0\소스.cpp(13): warning C4477: 'printf' : 서식 문자열 '%lf'에 'double' 형식의 인수가 필요하지만 variadic 인수 1의 형식이 'double *'입니다.
    1>c:\users\tadap\desktop\test0\test0\소스.cpp(13): warning C4477: 'printf' : 서식 문자열 '%lf'에 'double' 형식의 인수가 필요하지만 variadic 인수 2의 형식이 'double *'입니다.

    이렇게 나오면서 컴파일과 빌드는 나오는데 실행하여서 값을 입력해서 둘레와 면적을 구하려고 하면 값이 0.00이라고만 나옵니다. 도와주세요ㅠㅠ(c언어 공부한지 1주일돼서...)

    2018년 3월 14일 수요일 오전 8:22

답변

  • 마지막 printf 호출 라인을 이렇게 수정하시면 됩니다.

    printf("둘레=%lf, 평균=%lf \n", round, square);

    이렇게 하면 정상 출력될 것입니다.

    작성하셨던 코드에서 0으로 출력되었던 이유는, 원래 작성하셨던 코드를 보면 &round와 &square라고 변수를 지정하셨는데 이는 참조자(&)를 붙인 것으로 해당 변수의 주소에 대한 참조값이 되기 때문입니다. 그렇기 때문에 주소를 가리키는 hex 값이 &round 및 &square를 통해 전달되는데, 이는 double 포인터 (double *)로 변환되어 전달되고, 이것을 printf에서 지정한 형식 값인 %lf에서 인식을 못 하기 때문에 그냥 0으로 표시되는 것입니다.

    2018년 3월 14일 수요일 오후 1:22