我正在學習C.爲什麼靜態變量不會超過1
。使用靜態變量時出錯
#include <stdio.h>
int foo()
{
static int a = 0;
return a+1;
}
int main()
{
int i;
for (i = 0; i < 10; i = foo())
printf("%d\n", i);
return 0;
}
這段代碼中的錯誤在哪裏?
我正在學習C.爲什麼靜態變量不會超過1
。使用靜態變量時出錯
#include <stdio.h>
int foo()
{
static int a = 0;
return a+1;
}
int main()
{
int i;
for (i = 0; i < 10; i = foo())
printf("%d\n", i);
return 0;
}
這段代碼中的錯誤在哪裏?
因爲您沒有儲存任何東西。這應該爲你工作:
int foo()
{
static int a = 0;
return ++a;
}
這裏return ++a
意味着a = a + 1
,即增加一個第一,然後返回其值。 a+1
計算結果爲1
但不回存儲任何進入a
我明白了...... – noufal
您從不爲「a」變量賦值。你只是從例程中返回一個+ 1的值。
下面將工作:
#include <stdio.h>
int foo()
{
static int a = 0;
a++;
return a;
}
OP要求解釋爲什麼,而不是代碼解決方案。 –
這是一個無限循環,你正在返回一個+ 1。每次它將返回0 + 1,並且你的a值沒有得到更新。根據你在你的條件循環循環運行無窮大,直到超時發生。 試試這裏a的值是在每個函數調用中不斷更新。
int foo()
{
static int a = 0;
a++;
return a;
}
爲什麼你認爲它會? –
@ColeJohnson然後我不知道它沒有任何意義。現在我懂了。 – noufal