當我們聲明一個全局變量時,它被初始化爲其默認值。但是,當我們初始化使用extern
關鍵字的變量,爲什麼變量保持與它使用extern
關鍵字初始化值?當變量已被聲明爲全局變量時,使用extern關鍵字初始化時,變量中存儲的值是什麼?
例如,在下面爲什麼是輸出9
,而不是編譯時錯誤的代碼?由於沒有來自任何其他源文件的變量x
的外部鏈接,所以x有兩個副本,我們正在初始化變量兩次,所以這應該是錯誤的。請澄清這一點;我對這段代碼的流程感到困惑。
#include <stdio.h>
extern int x=9;
int x;
int main()
{
printf("%d",x);
return 0;
}
只要聲明是相同的(信),那麼它的好有多個聲明。它是*定義*你不能有兩個(或更多)。 –
爲什麼不使用'extern int main(void){printf(「%d \ n」,x);返回0; }'?它也可以。 –