29
A
回答
36
是 - C標準ISO/IEC 9899:1999又名C99(和C++)的標準說,這一定是這樣。請參閱WG14 N1256的第6.7.8節(「初始化」)中的第10項準確的文本。
正如其他人所指出的那樣,這是很好的做法,總是初始化靜態變量:
static int idx = 0;
之所以這樣做,這不是因爲一些編譯器可能不總是初始化靜態變量零(失敗的編譯器做這樣的初始化將會終止,並且不能聲稱是C或C++編譯器),那就是說出你的意思 - 可能是最基本的編程規則。
3
雖然標準說是的...良好的做法表明,你應該總是初始化變量。你永遠不知道什麼時候你改變編譯器,或者不得不在另一臺機器上編譯它,你想盡量減少意外行爲的可能性。
相關問題
- 1. 靜態變量初始化
- 2. 靜態變量初始化
- 3. 靜態變量初始化
- 4. 初始化靜態變量
- 5. C#是否自動初始化變量
- 6. C++是靜態變量初始化= atomic?
- 7. Windows XP是否自動將數組初始化爲零?
- 8. 在C99中使用靜態變量初始化靜態變量
- 9. 函數中的靜態變量是否初始化爲NULL(手動)?
- 10. 是否可以用lambda初始化靜態變量?
- 11. 自動初始化變量
- 12. 靜態變量重新初始化
- 13. PHP的靜態變量初始化
- 14. 靜態成員變量初始化
- 15. 靜態只讀變量初始化
- 16. 靜態變量初始化順序
- 17. 靜態成員變量初始化C++
- 18. 靜態變量未初始化
- 19. 初始化靜態最終變量
- 20. 靜態變量的初始化順序
- 21. ARC下的Objective-C是否保證將靜態和ivars初始化爲零?
- 22. 初始化靜態final變量聲明與初始化在Application.OnCreate()
- 23. 初始化後可以初始化靜態變量嗎?
- 24. 初始化靜態向量
- 25. 的Objective-C:初始化變量爲零
- 26. 變量中獲得初始化爲零
- 27. 靜態初始化結構以零
- 28. 需要動態分配(初始化)靜態變量
- 29. 靜態局部變量和靜態局部對象初始化
- 30. 如何在JavaScript靜態類中初始化靜態變量?
然後再一次...反對顯式初始化靜態變量的參數是它擴展了可執行文件的大小,因爲它們不再存在於.bss中。 – ephemient 2009-08-18 16:17:29
我不明白爲什麼應該如此。編譯器可以很容易地忽略顯式的零初始化。 – 2009-08-18 16:21:46
實現細節。 GCC 4.2和MSVC 7.1確實似乎將'static int a;'和'static int a = 0;'等價處理。我記得編譯器沒有,但我似乎手頭上沒有足夠的... – ephemient 2009-08-18 18:19:13