局部未初始化内置类型变量在函数中一般是默认初始化(相对于全局变量),默认初始化的值都是未知值,但是g++下main函数中的这种类型变量会被初始化为0或空(如果是string或者是指针的话),但是vs下main函数中的这种类型变量会初始化为未知值,这是跟编译器有关的吗?
怪我咯2017-04-17 13:32:56
就c語言而言,局部變數一般存在於堆疊中;除非是某些葉子函數,少量的局部變數直接放在暫存器裡面。棧裡面的值,當然預設是未知的了。如果編譯器產生了一段程式碼,專門在引用堆疊裡面的局部變數之前先將其初始化,那就時類似g++的做法了;否則就是vs的做法。
PHP中文网2017-04-17 13:32:56
應該是的,vs編譯器,局部內建類型變數都是不初始化的。 c++追求更高的效能,如無必要,c++編譯器一般不會多做額外的工作,例如變數預設初始化。 。 。