首頁  >  問答  >  主體

c++ - 局部变量初始化的小问题

  局部未初始化内置类型变量在函数中一般是默认初始化(相对于全局变量),默认初始化的值都是未知值,但是g++下main函数中的这种类型变量会被初始化为0或空(如果是string或者是指针的话),但是vs下main函数中的这种类型变量会初始化为未知值,这是跟编译器有关的吗?

黄舟黄舟2765 天前853

全部回覆(2)我來回復

  • 怪我咯

    怪我咯2017-04-17 13:32:56

    就c語言而言,局部變數一般存在於堆疊中;除非是某些葉子函數,少量的局部變數直接放在暫存器裡面。棧裡面的值,當然預設是未知的了。如果編譯器產生了一段程式碼,專門在引用堆疊裡面的局部變數之前先將​​其初始化,那就時類似g++的做法了;否則就是vs的做法。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:32:56

    應該是的,vs編譯器,局部內建類型變數都是不初始化的。 c++追求更高的效能,如無必要,c++編譯器一般不會多做額外的工作,例如變數預設初始化。 。 。

    回覆
    0
  • 取消回覆