C++中局部变量必须先主动初始化,但下面的代码会输出0 ,不知为何?
#include<iostream>
using namespace std;
int main(){
int a;
cout << a << endl;
return 0;
}
C++中局部变量必须先主动初始化,但下面的代码会输出0 ,不知为何?
#include<iostream>
using namespace std;
int main(){
int a;
cout << a << endl;
return 0;
}
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
1 回答3.3k 阅读
C++局部变量必须先初始化,否则其内存上的值是未知的,若是前面用过这块内存且未消除这块内存上的值,则此时会读取到上次的值。
此外不同编译器对未初始化的局部变量会有不同的处理,比如上面的
在vs2017之前会输出0,在vs2017及之后会报错——C4700使用了未初始化的局部变量‘a’。即使有的编译器会把未初始化的局部变量赋值为0但是我们依旧要保持给所有局部变量初始化的好习惯,避免一些意外错误。