亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C ++中的變量初始化

C ++中的變量初始化

C++
慕村9548890 2019-08-02 16:30:12
C ++中的變量初始化我的理解是int變量將0自動初始化; 但事實并非如此。下面的代碼打印一個隨機值。int main () {        int a[10];     int i;     cout << i << endl;     for(int i = 0; i < 10; i++)         cout << a[i] << " ";     return 0;}什么規則(如果有的話)適用于初始化?具體來說,在什么條件下變量自動初始化?
查看完整描述

3 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

如果是,它將自動初始化

  • 它是一個類/結構實例,其中默認構造函數初始化所有基本類型; 喜歡MyClass instance;

  • 你使用數組初始化語法,例如int a[10] = {}(全部歸零)或int a[10] = {1,2};(除了前兩項之外全部歸零:a[0] == 1a[1] == 2

  • 同樣適用于非聚合類/結構,例如MyClass instance = {}; (有關這方面的更多信息,請點擊此處

  • 它是一個全局/外部變量

  • 定義變量static(無論是在函數內還是在全局/命名空間范圍內) - 謝謝Jerry

永遠不要相信自動初始化的普通類型(int,long,...)的變量!它可能發生在像C#這樣的語言中,但不會發生在C&C ++中。


查看完整回答
反對 回復 2019-08-02
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

int不會初始化為零。當你說int i;,你所做的只是為整數保留空間。該位置的值未初始化。這只是你說的int i = 0;(或者int i = 5;在這種情況下,值被初始化為5)。無論如何,將變量初始化為某個已知值是一種很好的做法。否則,i保留為該存儲空間保留的任何隨機值。這就是cout打印出隨機值的原因。

默認值取決于語言的實現。有些語言會將其初始化為某種“理智”值(或許可能為0)。作為一個經驗法則,我總是初始化為一些明智的值的變量(除非我知道我將它初始化到別的東西肯定之前,我使用它)。正如我之前提到的那樣,假設價值是理智的,這是不明智的。它可能是也可能不是(取決于語言,或該語言的解釋器/編譯器的實現)。


查看完整回答
反對 回復 2019-08-02
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

請參見4.9.5 C ++編程語言的初始化。

根據您的變量是否為本地,靜態,用戶定義或const默認初始化可能發生。

因為您正在使用POD(普通舊數據類型),所以自動變量不會初始化為任何默認值。


查看完整回答
反對 回復 2019-08-02
  • 3 回答
  • 0 關注
  • 752 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號