c++ - 局部变量初始化的小问题
黄舟
黄舟 2017-04-17 13:30:56
0
2
868

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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(2)
刘奇

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

Ty80

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板