使用未初始化的變量是常見的程序錯誤,通常也是難以發現的錯誤。雖然許多編譯器都至少會提醒不要使用未初始化變量,但是編譯器並未被要求去檢測未初始化變量的使用。而且,沒有一個編譯器能檢測出所有未初始化變量的使用。
有時我們很幸運,使用未初始化的變量導致程序在運行時突然崩潰。一旦跟蹤到程序崩潰的位置,就可以輕易地發現沒有正確地初始化變量。
但有時,程序運行完畢卻產生錯誤的結果。更糟糕的是,程序運行在一部機器上時能產生正確的結果,但是另外一部機器上卻不能得到正確的結果。添加代碼到程序的一些不相關的位置,會導致我們認為是正確的程序產生錯誤結果。,
問題出在未初始化的變量事實上都有一個值。編譯器把該變量放到內存中的某個位置,而把這個位置的無論哪個位模式當做是變量初始的狀態。當被解釋成整型值時,任何為模式都是合法的值——雖然我這個值不可能是程序員想要的,因為這個值合法,所以使用它不可能會導致程序崩潰。可能的結果是導致程序錯誤執行或者錯誤計算。
建議每一個內置類型的對象都要初始化。雖然這樣做並不總是必須的,但是會更加容易和安全,除非你確定忽略初始化是不會帶來風險。