3 回答

TA貢獻1877條經驗 獲得超1個贊
如果是,它將自動初始化
它是一個類/結構實例,其中默認構造函數初始化所有基本類型; 喜歡
MyClass instance;
你使用數組初始化語法,例如
int a[10] = {}
(全部歸零)或int a[10] = {1,2};
(除了前兩項之外全部歸零:a[0] == 1
和a[1] == 2
)同樣適用于非聚合類/結構,例如MyClass instance = {}; (有關這方面的更多信息,請點擊此處)
它是一個全局/外部變量
定義變量
static
(無論是在函數內還是在全局/命名空間范圍內) - 謝謝Jerry
永遠不要相信自動初始化的普通類型(int,long,...)的變量!它可能發生在像C#這樣的語言中,但不會發生在C&C ++中。

TA貢獻1836條經驗 獲得超5個贊
int
不會初始化為零。當你說int i;
,你所做的只是為整數保留空間。該位置的值未初始化。這只是你說的int i = 0;
(或者int i = 5;
在這種情況下,值被初始化為5)。無論如何,將變量初始化為某個已知值是一種很好的做法。否則,i
保留為該存儲空間保留的任何隨機值。這就是cout
打印出隨機值的原因。
默認值取決于語言的實現。有些語言會將其初始化為某種“理智”值(或許可能為0)。作為一個經驗法則,我總是初始化為一些明智的值的變量(除非我知道我將它初始化到別的東西肯定之前,我使用它)。正如我之前提到的那樣,假設價值是理智的,這是不明智的。它可能是也可能不是(取決于語言,或該語言的解釋器/編譯器的實現)。

TA貢獻1826條經驗 獲得超6個贊
請參見4.9.5 C ++編程語言的初始化。
根據您的變量是否為本地,靜態,用戶定義或const默認初始化可能發生。
因為您正在使用POD(普通舊數據類型),所以自動變量不會初始化為任何默認值。
- 3 回答
- 0 關注
- 752 瀏覽
添加回答
舉報