16-5 심사문제 : 실수를 정수로 변환하기 질문
, 이 재윤님이 작성안녕하세요.
이 문제를 풀 때 처음에 한 생각은
#include <stdio.h>
int main(void)
{
float num1;
scanf("%f", &num1);
printf("%d", num1);
return 0;
}
이렇게 풀려했는데, visual studio에서 실행해보니 2.5를 입력하면 0으로 나와서 질문드립니다. 왜 이런식으로 코드를 짜면 출력값이 0으로 나오나요? 제가 내린 가설은 자료형의 축소없이 바로 알맞지 않은 서식 지정자를 사용해서 그렇다고 가설을 내렸는데 제 가설이 맞는 건가요? 감사합니다.
Re: 16-5 심사문제 : 실수를 정수로 변환하기 질문
, 도장_ 관리자님이 작성서식 지정자는 변수의 유형에 맞아야 합니다.
%d는 int 정수형에 사용합니다. 실수를 사용하면 암묵적으로 정수형으로 형변환을 하게 됩니다. 이는 올바른 사용법이 아니며 컴파일 과정에서 경고가 표시됩니다.
main.c:14:18: warning: format specifies type 'int' but the argument has type 'float' [-Wformat] printf("%d", num1); ~~ ^~~~ %f 1 warning generated.