84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
局部未初始化内置类型变量在函数中一般是默认初始化(相对于全局变量),默认初始化的值都是未知值,但是g++下main函数中的这种类型变量会被初始化为0或空(如果是string或者是指针的话),但是vs下main函数中的这种类型变量会初始化为未知值,这是跟编译器有关的吗?
人生最曼妙的风景,竟是内心的淡定与从容!
就c语言而言,局部变量一般存在于栈中;除非是某些叶子函数,少量的局部变量直接放在寄存器里面。栈里面的值,当然默认是未知的了。如果编译器生成了一段代码,专门在引用栈里面的局部变量之前先将其初始化,那就时类似g++的做法了;否则就是vs的做法。
应该是的,vs编译器,局部内置类型变量都是不初始化的。c++追求更高的性能,如无必要,c++编译器一般不会多做额外的工作,比如变量默认初始化。。。
就c语言而言,局部变量一般存在于栈中;除非是某些叶子函数,少量的局部变量直接放在寄存器里面。栈里面的值,当然默认是未知的了。如果编译器生成了一段代码,专门在引用栈里面的局部变量之前先将其初始化,那就时类似g++的做法了;否则就是vs的做法。
应该是的,vs编译器,局部内置类型变量都是不初始化的。c++追求更高的性能,如无必要,c++编译器一般不会多做额外的工作,比如变量默认初始化。。。