#include<stdio.h>
int fun()
{
static int x=1;
x*=2;
return x;
}
void main()
{
int i,s=1;
for(i=1;i<=3;i++)
s*=fun();
printf("%d",s);
}
區域變數,不應該結果是8,怎么等于64?
uj5u.com熱心網友回復:
static int x=1; //只執行一次,而不是3次uj5u.com熱心網友回復:
int fun()
{
static int x=1;
x *= 2;
return x;
}
void main()
{
int i,s=1;
for(i=1;i<=3;i++)
{
s*=fun();
printf("%d=%d\n",i,s);// 1=2; 2=8; 3=64
}
}
uj5u.com熱心網友回復:
fun函式執行了三次,而x是static變數,在函式執行程序中全程有效,變成了全域變數uj5u.com熱心網友回復:
"變成了全域變數" 是 函式 fun() 才能 看到的 靜態變數!uj5u.com熱心網友回復:
你debug下單步進去看看不就清楚了~uj5u.com熱心網友回復:
static int x=1 這個是個靜態的變數 相當于一個全域的變數 相當于把這個變數宣告在所有函式外面 所有初始化為1只執行了一次uj5u.com熱心網友回復:
靜態全域變數。。。區域變數。。。樓主好好區分下!!轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/52883.html
標籤:基礎類
上一篇:添加com組件失敗
下一篇:關于ShellExecuteEx
