이 C 프로그램의 결과를 설명해 주시겠습니까? 나는 float
을 밀고 있지만 int
을 읽고 있기 때문에 문제가 printf("%d\n",t);
함수 호출 중 손상된 스택과 같다고 추측합니다. 나는 잘 모르겠다.C 프로그램의 예상치 못한 결과
#include <stdio.h>
int main()
{
long x;
float t;
scanf("%f",&t);
printf("%d\n",t);
x=30;
printf("%f\n",x);
{
x=9;
printf("%f\n",x);
{
x=10;
printf("%f\n",x);
}
printf("%f\n",x);
}
x==9;
printf("%f\n",x);
}
그리고 출력 당신은 긴 인쇄 잘못된 형식 지정자를 사용하는
$ ./a.out
20.39
0
20.389999
20.389999
20.389999
20.389999
20.389999
$
더 많은 컴파일러 경고를 사용하여 코드를 컴파일해야하며 (SO에 코드를 게시하기 전에) 사용자에게주는 경고에주의해야합니다. –
@Jonathan Leffler : Q를 읽으면서 그는 잘못하고 있지만 실제로 무슨 일이 일어나는지 알고 싶습니다. 그는 더 명시 적이어야하고 컴파일러/플랫폼 정보를 포함해야했습니다. – Erik