我的代码中有一个int变量的一个有趣的问题,它只是在每次调用时声明变量并且增加1.我理解这一点,当我们调用一个方法时,计算机将框架与此一起放置call及其局部变量在堆栈中(可访问且适合访问)。但是在实践中出现了一些错误。我得到一个32754的整数增加1(即32755)。
它远离int的最大值,但无论如何它都不能像我想象的那样工作。不知何故第二次变量未正确初始化(应该是var = 0)。所以我想知道它是如何工作的以及引擎盖下的内容。
我的“错误”代码:
- (IBAction)pressed:(id)sender
{
int num;
NSLog(@"Num is %d", num);
num++;
NSLog(@"Num is %d", num);
}
工作代码:
- (IBAction)pressed:(id)sender
{
int num = 0;
NSLog(@"Num is %d", num);
num++;
NSLog(@"Num is %d", num);
}
答案 0 :(得分:1)
非静态的局部变量未初始化为任何已定义的值,因此您必须初始化该变量
答案 1 :(得分:0)
非静态局部变量未初始化,这就是在这种情况下发生的事情。
静态变量,全局变量和实例变量初始化为0。