我正在编写一个简单的程序来测试变量范围的工作原理,但我得到了意想不到的结果,所以我希望你能帮助我理解它们。 我编译了这段代码
#include<iostream>
using namespace std;
void myFunction1()
{
int e;
cout << e << endl;
e++;
cout << e << endl<<endl;
}
int main()
{
cout << "MAIN" << endl;
int a,b,c,d;
cout << "a= " << a << endl;
cout << "b= " << b << endl;
cout << "c= " << c << endl;
cout << "d= " << d << endl<<endl;
cout << "MY_FUNC" << endl;
myFunction1();
myFunction1();
myFunction1();
}
并获得了这个输出
MAIN
a= -1617852976
b= 32767
c= 0
d= 0
MY_FUNC
32675
32676
32676
32677
32677
32678
所以,有两件事我真的不明白
1) 在 main() 函数中,我创建了 4 个 int 变量 (a、b、c、d),但没有对它们进行初始化,因此我希望它们在每次运行代码时都采用不同的值。奇怪的是,第一个变量 (a) 总是不同的,而其他变量总是采用相同的值 (b=32767, c=d=0)
2) 函数输出对我来说更陌生。 同样,我创建了一个变量 e 而不对其进行初始化,因此它第一次采用随机值(在示例中,e=32675)......然后,我将其增加一个,以便打印 32675 和32676,听起来不错。
但是为什么我第二次调用该函数时,e 保持以前的值 (32676)?我认为 e 是在我每次调用 myFunction1() 时创建的,并在函数结束时被删除,因此 e 每次都采用不同的随机值(因为我没有初始化它)。为什么即使变量超出范围也会存储 e 的值?
最佳答案
未初始化的原始值根本就没有定义。它们可以具有任何值。
关于C++ - 局部未初始化变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28798229/