当我在devC ++中运行这个cpp代码时:
#include <iostream>
using namespace std;
#include <conio.h>
void getdata();
void dis();
void getdata()
{
int radius;
cout<<"\n enter radius of circle:-";
cin>>radius;
}
void dis()
{
int rad;
cout<<"\n num is "<<rad;
}
int main()
{
//int radius;
getdata();
dis();
getch();
return 11;
}
我的输出显示:
enter radius of circle:-15 radius is 15
我的问题是:
radius
和rad
是其功能的本地,那么rad
与radius
的价值是如何相同的?他们有不同的职能。
有人可以解释一下发生了什么吗?
答案 0 :(得分:-1)
未定义的行为。
当调用getdata()
时,radius
占用堆栈上的特定内存块,并填充用户的输入。当getdata()
退出时,该内存块可供以后重用,其内容不会被清除。
之后调用dis()
时,rad
未被初始化,因此它会获取它占用的内存块中已存在的任何随机值。
最有可能的是,rad
恰好占据了radius
之前占用的相同内存块。这就是为什么你看到相同的价值。但这不能保证,所以不要依赖它。在radius
或rad
上方添加一些其他变量,您会看到不同的行为。
在执行依赖于它们的操作之前,始终初始化变量。
答案 1 :(得分:-2)
如果变量未初始化,则会保留垃圾值!。
在您的情况下applicationWillEnterForeground
将打印垃圾值。每次编译时它可能会有所不同。