我有一段简单的代码,使我完全困惑。

NSInteger ymax;
NSInteger ymin;
NSInteger numberIndex1;
NSInteger numberIndex2;


for (NSNumber *theNumber in array2)
{
    if ([theNumber integerValue] > ymax) {
        ymax = [theNumber integerValue];
        numberIndex1 = [array2 indexOfObject:theNumber];
    }
}

for (NSNumber *theNumber in array2)
{
    if ([theNumber integerValue] < ymin) {
        ymin = [theNumber integerValue];
        numberIndex2 = [array2 indexOfObject:theNumber];
    }

}

NSLog(@"Highest number: %d at index: %d", ymax, numberIndex1);
NSLog(@"Lowest number: %d at index: %d", ymin, numberIndex2);

NSLog输出为:

最高编号:129171656,索引:-1073752392(呵呵)

最低数字:57,索引:5(正确)

您如何解释这种奇怪的行为?两种功能看起来相同。一个正在工作,一个不是吗?我为此玩了很多,但是我仍然不能动弹。任何帮助,将不胜感激/

最佳答案

如果我没看错,您正在考虑NSInteger的默认值为0,否,因为它是一个局部自动变量,所以不能保证它为零。如果不进行初始化,则其值是不确定的。

因此,您需要为var设置默认值,以ymax = -1开始;

07-24 12:53