以外的功能定義的變量,下面是用C語言編寫代碼生活比主
#include<stdio.h>
int foo()
{
static int a=0;
a=a+1;
return a;
}
int main()
{
foo();
foo();
printf("%d",foo());
}
我在Eclipse IDE中編譯使用gcc11這個代碼,我已經得到3我的輸出。
這就是我認爲應該發生的,導致我的輸出爲1不3.
函數調用1:主函數調用函數foo和 控制轉到函數foo,則foo中的變量'a'是 ,其初始值爲零,然後將其增加 1,並將此增量值(1)返回給主函數。 在這一步,爲函數foo創建的變量應該已被銷燬。
函數調用-2:同函數調用-1:
函數調用-3:同函數調用-1:
在結束時的值由printf函數在main中打印應該是1.
爲什麼程序的輸出是3?
這有很大幫助。謝謝! – 2014-10-09 10:19:06