2011-05-04 146 views

回答

1

簡短的回答,是的。

靜態的未初始化變量駐留在可執行文件的.bss段中,操作系統在調用main之前,在程序啓動時分配並將它們歸零。

+1

初始化它仍然是一個好主意。 – Dima 2011-05-04 17:49:15

+0

@迪瑪:一個特殊的原因? – 2011-05-04 17:52:28

+1

這是一個很好的做法,恕我直言。這樣您就不必考慮哪些變量會自動初始化,哪些變量不會自動初始化。假設您以後決定'x'不應該是靜態的,但忘記初始化它,並且該錯誤將是一個極大的痛苦。 – Dima 2011-05-04 17:58:59

5

C99 Standard說:

5.1.2執行環境

...中的所有對象在啓動程序 之前,初始化(設置爲其初始值)的靜態存儲器應爲 。

而且它也說,與static限定詞定義一個局部變量具有「靜態存儲」,並在沒有初始化的所有對象採取正確的類型,它們的值0。

0

所有的靜態變量存儲在Datasection在存儲部分,所有的變量設置爲默認值。