void f(void);
int x = 15213;
int main()
{
f();
printf("x = %d\n", x);
return 0;
}
/* bar3.c */
int x;
void f()
{
x = 15212;
}
在上面的代碼中,我得到的輸出是15212.我不明白怎麼做?使用全局變量解釋C程序的輸出
首先,主函數調用f()在另一個c文件中定義。在f()中,x的值從15213更改爲15212.然後我們打印x。但是對x做出的改變應該只保留在f中嗎? X的範圍應該僅限於f()。即使那麼它正在打印15212
'x'是一個全局變量。爲什麼它的範圍限於'f'? – jwodder
要獲得您似乎想要的行爲,請在兩個文件中使用'static int x'。 –
'x'在任何函數之外聲明,所以它是一個全局變量。如果你不想將'x'的作用域限制爲'f()',那麼你必須在'f()'中聲明它(也可以把它設爲'static')。如果你希望它的作用域被限制爲一個源文件(比如'bar3.c'),那麼一定要使它成爲'static'。 –