#include <stdio.h>
int main()
{
______________________
______________________
long double num3 = 3.7l;
printf("%f %f %Lf\n", num1, num2, num3);
printf("%d %d\n", sizeof(num1), sizeof(num2));
return 0;
}
결과
1.800000 2.900000 3.700000
나와야 하는데요...
4 8
<해설> num1에는 1.8과 num2에는 2.9를 저장해주면 됩니다. 이때 자료형 크기까지 만족하려면 num1은 float, num2는 double이 되어야 합니다.
부분이 이해가 안 됩니다...
1.8과 2.9, 3.7이 어떻게 800000, 900000, 700000이 나오며
변수 크기 결과 값이 4 8 이 아닌 8만 나오는 것이 이해가 안됩니다.
어떤 코드를 제출해서 테스트했는지 알 수 없습니다.
문의할 때 같이 올리세요.
맞는 자료형을 찾아서 변수를 선언하고 값을 할당하면 되는 문제입니다.
printf("%f %f %Lf\n", num1, num2, num3);
num1과 num2는 %f입니다. 서식 지정자 %f를 쓸 수 있는 것은 float, double입니다. num1과 num2 모두 float 일 수도 있고, double 일 수도 있죠. 그래서 두 번째 힌트가 제시됩니다.
printf("%d %d\n", sizeof(num1), sizeof(num2));
sizeof(num1)은 num1 변수의 크기를 구합니다. 이 크기가 4이므로 num1은 float라는 것을 알 수 있습니다.
sizeof(num2)는 num2 변수의 크기를 구합니다. 이 크기가 8이므로 num2은 float가 아니라는 것을 알 수 있습니다. 서식 지정자 %f를 쓸 수 있으면서 크기가 8인 타입은 double입니다.
%f로 출력하면
1.800000 2.900000 3.700000유효자릿수 6개까지만 출력합니다.
소숫점 둘째자리까지 출력하고 싶다면 %.2f처럼 서식 지정자를 사용할 수 있지만, 문제에서는 %f만 지정했으므로 유효자릿수 6개를 모두 출력합니다.
따라서 1.8을 출력하면 1.800000가 출력됩니다.
변수 크기 결과 값이 4 8 이 아닌 8만 나오는 것이 이해가 안됩니다.
이 문의는 내용을 이해할 수 없습니다.
출력 결과가
8 8
이었다는 뜻인지요? 그렇다면 변수 선언을 double num1, double num2로 했다는 것으로 보입니다.