請您介紹一下這個C程序的輸出結果嗎?我猜想問題在於printf("%d\n",t);
函數調用期間堆棧損壞,因爲我推送的是float
,但讀取的是int
。我不確定。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之前)。 – 2011-03-23 09:32:22
@Jonathan Leffler:當我讀到Q時,他知道他做錯了,但想知道實際發生了什麼。儘管如此,他應該更加明確,並且包含編譯器/平臺信息。 – Erik 2011-03-23 09:46:17