void fn()這個函數里不是規定了函數返回值為void了么?為何在for中,卻能用這個沒有返回值的void函數繼續循環運算下去,他是怎么儲存的?
#include <stdio.h>
void fn()
{
? ? static int x = 1; ? //定義靜態局部變量
? ? x*=2;
? ? printf("x=%d\n",x); ? ??
}
int main()
{
? ? int i;
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? fn();
? ? }
? ? extern int x; ? ? ?//調用外部變量
? ? printf("x=%d\n",x);
? ? return 0;
}
int x=100;
想不明白,明明這個函數為無返回型void函數,為何會有返回值供for判斷語句循環?
2015-02-01
for循環判斷的是括號中第一個分號后面的表達式,也就是for(i=0;i<5;i++)中的 i<5。這與循環體中的內容沒有關系。
2015-01-31
根據你題目的意思,for循環必定循環5次,這是與其中的內容無關的,因為循環結束的判定條件是i<5。
而循環的內容就是調用fn這個函數,這個函數呢是void,所以是沒有返回值的,所以這樣寫↓是會報錯誤的(略微加了點東西,看循環里面)
大概明白了嗎?函數的void與否與循環沒有一丁點關系。至于儲存與一般的函數相同,具體的你想知道嗎?得用匯編的知識了。。。
2015-01-31
這是在for循環里不斷調用fn而已 , void是指沒返回值 , 如果不是void 就可能有 a=fn();