C++里面诡异的问题
#include <iostream>
using namespace std;
int i=1;
int main()
{
int i=i;
cout<<i<<endl;
return 0;
}
c++会通过编译,但是会在运行时报错,因为 int i=i; 从声明i变量开始就是可见的,所以main中的i不是1,是一个未定义的值。
关于作用域,是小范围的同名变量会覆盖外部的变量,比如代码这么改。
#include <iostream>
using namespace std;
int i=1;
int main()
{
cout<<i<<endl;
int i=5;
cout<<i<<endl;
return 0;
}
输出:
1
5